在用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
是否有一些较短的方法或节省字符的优化?您可以假设bis 0或1,不仅是Falsey或Truthy,还可以对数据类型和值进行假设(如果有帮助的话)。
为什么在Stack Overflow中没有呢?
—
BobTheAwesome
@BobTheAwesome我不是在要求很好的方法来做到这一点,只是简短的方法。
—
xnor
x,y=C(x,y,z,b)(14个字符)并将这些实现中的任何一个都推入的主体中C。