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用作三元运算符时解压列表会失败?
这里的问题是优先级:
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)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |