首页 > 解决方案 > 三元拆箱清单

问题描述

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用作三元运算符时解包列表会失败?

标签: python

解决方案


这里的问题是优先级:

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

推荐阅读