在用Python完成的多次高尔夫球比赛中,将固定值分配给布尔值选择的两个变量之一。所选变量被给定值覆盖,另一个不变。
17个字符:
if b:y=z
else:x=z
分配条件值很容易,但是分配给条件变量似乎很麻烦。我想知道是否缺少更短的方法。
如果x,y
是列表L
,这将很容易,但是假设上下文需要引用足够多的变量以致于编写L[0]
且L[1]
过于禁止。转换时间太长:
20个字符:
L=[x,y];L[b]=z;x,y=L
我知道最快的方法是使用Python 2 exec
,这很奇怪:
16个字符,Python 2:
exec"xy"[b]+"=z"
元组选择似乎更长:
18、19、18、18个字符:
x,y=b*(x,z)or(z,y)
x,y=[z,x,y,z][b::2]
y,x=[y,z,x][b:b+2]
y,x,*_=[y,z,x][b:] # Python 3
是否有一些较短的方法或节省字符的优化?您可以假设b
is 0
或1
,不仅是Falsey或Truthy,还可以对数据类型和值进行假设(如果有帮助的话)。
为什么在Stack Overflow中没有呢?
—
BobTheAwesome
@BobTheAwesome我不是在要求很好的方法来做到这一点,只是简短的方法。
—
xnor
x,y=C(x,y,z,b)
(14个字符)并将这些实现中的任何一个都推入的主体中C
。