x,y,z = [1,2,3], [3,4,5,6], [7,8,9]
for a,b,c in x,y,z:
print(a,b,c)
1 2 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
或者,从x中删除一个:
x,y,z = [1,2], [4,5,6], [7,8,9]
for a,b,c in x,y,z:
print(a,b,c)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
天哪,这真是一团糟。这只是使用了太多python的iterable unpacking。语句}。在这种情况下,
a, b, c = iterable
只是将iterable
的元素赋给变量a
、b
和{iterable
必须有3个元素。在首先你有:
然后你有:
^{pr2}$还有一件事需要注意,语句
mytuple = 1, 2, 3
与mytuple = (1, 2, 3)
是相同的。在它的代码非常直截了当。在
这将三个列表分配给}。在
x
、y
、和{这将创建一个
^{pr2}$(x,y,z)
的元组,并将迭代每个元素。在但是,
a,b,c
意味着iterable应该有3个对象然后,打印}。在
a
、b
和{如果您想知道发生了什么,我建议您更改
y
中的一个元素:或者,从
x
中删除一个:你已经有了很好的答案,但我认为考虑到这种等效的变化将有助于使问题更清楚:
你不会惊讶于},对吧?在原始代码中也发生了完全相同的情况,只是:
^{pr2}$t
连续绑定到x
、y
和{部分没有那么明显。在
相关问题 更多 >
编程相关推荐