三元开箱单

Taw*_*Taw 1 python

test = [1,2]
one, two = test[:]
print(one)
print(two)
one, two = test[:] if len(test)==2 else test[0], test[0]
print(one)
print(two)
Run Code Online (Sandbox Code Playgroud)

输出:

1, 2, [1, 2], 1
Run Code Online (Sandbox Code Playgroud)

为什么在if用作三元运算符时解压列表会失败?

Meg*_*Ing 6

这里的问题是优先级:

test[:] if len(test)==2 else test[0], test[0]
Run Code Online (Sandbox Code Playgroud)

被解析为

(test[:] if len(test)==2 else test[0]), test[0]
Run Code Online (Sandbox Code Playgroud)

这不是你想要的。使用手动括号:

test[:] if len(test)==2 else (test[0], test[0])
Run Code Online (Sandbox Code Playgroud)