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)
输出:
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])
推荐阅读
- r - 为什么 R 中的 pileup() 函数会过度计数读取?
- javascript - 有没有办法在滚动条上放置标记?
- oracle - “java.sql.SQLException:ORA-01008:并非所有变量都绑定”错误
- aws-serverless - 无法从 aws sam 应用程序访问 Redis 缓存
- azure - Azure 服务器负载平衡
- ios - 尝试通过 toolBar 关闭 UIPickerView 导致意外行为
- reactjs - 如何使用 react-loadble 与 ssr 进行代码吐槽?
- c# - 为什么这段代码在定时器执行时不起作用,但在其他地方调用时却能正常工作?
- botframework - 如何在 net-core 的 botframework v4 中调用对话框?
- javascript - 在无限滚动上显示有限数量的项目