q,w = 1,2如果1 <1。 2其他2,1; ValueError:要解压缩的值太多。为什么?

时间:2014-07-15 07:49:59

标签: python if-statement iterable-unpacking

如标题所述

q, w = 1, 2 if 1 < 2 else 2, 1
ValueError: too many values to unpack

这里发生了什么?

2 个答案:

答案 0 :(得分:8)

如果你检查

1, 2 if 1 < 2 else 2, 1

然后你会看到python会像

那样解释它
(1, 2 if 1 < 2 else 2) , 1

您最终会得到(1, 2, 1),其中包含q, w

的2个变量的过多值

因为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)

应该解决你的问题。虽然我不会这样编写代码,因为它更难阅读。