为什么这段代码是错误的?
for i,j in range(100),range(200,300):
print i,j
当我测试这个 for 语句时,我看到了这个错误
ValueError: too many values to unpack
但是当我测试的时候
for i, j in range(2),range(2):
print i,j
一切都是正确的!
最佳答案
range(2)
给出一个列表 [0, 1]。因此,您的 i, j
将从第一个列表中获取,然后从第二个列表中获取。
因此,您的循环类似于:-
for i, j in [0, 1], [0, 1]:
print i, j
打印:-
0 1
0 1
现在,如果那里有 range(3)
,那么它将失败,因为 range(3)
给出了一个 3 元素列表,无法解包在两个循环变量
中。
所以,你不能这样做:-
for (i, j) in [[0, 1, 2]]:
print i, j
它会失败,给你你得到的错误。
尝试使用 zip
,将您的两个列表压缩成一个。:-
>>> for (i, j) in (zip(range(2), range(3))):
print i, j
0 0
1 1
>>>
在上述情况下,zip
将您的列表转换为包含 2
元素的元组列表,因为您正在压缩 2 个列表。
>>> zip(range(2), range(3))
[(0, 0), (1, 1)]
类似地,如果您zip
三个列表,您将得到 3 元素元组的列表。
关于python - 值错误 : too many values to unpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13299357/