如标题所述
q, w = 1, 2 if 1 < 2 else 2, 1
ValueError: too many values to unpack
这里发生了什么?
答案 0 :(得分:8)
如果你检查
1, 2 if 1 < 2 else 2, 1
然后你会看到python会像
那样解释它(1, 2 if 1 < 2 else 2) , 1
您最终会得到(1, 2, 1)
,其中包含q, w
因为python接受条件(1 < 2
)之后的第一个逗号作为单行if-else语句的结尾,并将后逗号部分附加到结果值集。
最后一个值设置的括号将足够
q, w = 1, 2 if 1 < 2 else (2, 1)
但是对两者都使用括号肯定会更好。
q, w = (1, 2) if 1 < 2 else (2, 1)
答案 1 :(得分:0)
q, w = (1, 2) if 1 < 2 else (2, 1)
应该解决你的问题。虽然我不会这样编写代码,因为它更难阅读。