三元开箱单

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])


以上是三元开箱单的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>