三元开箱单
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)
输出:
1, 2, [1, 2], 1
为什么在if
用作三元运算符时解压列表会失败?
回答
这里的问题是优先级:
test[:] if len(test)==2 else test[0], test[0]
被解析为
(test[:] if len(test)==2 else test[0]), test[0]
这不是你想要的。使用手动括号:
test[:] if len(test)==2 else (test[0], test[0])