python - 值错误 : too many values to unpack

标签 python loops

为什么这段代码是错误的?

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/

相关文章:

python - Pandas 转换多索引头

python - 从生成器懒惰地创建 dask 数据框

c# - DataGridView 行循环和单元格数据访问

java - 如何从一个线程循环 arraylist,同时从其他线程添加到它?

linux - 脚本转到文件夹的每个子目录并运行命令

python - "Balancing"符号列表

python - 合作实验室和 Selenium : error message 'geckodriver' executable needs to be in PATH

c++ - C++ 中的循环融合(如何帮助编译器?)

python - sklearn 分类的 class_weight 字典格式

JavaScript setInterval 问题