我有一个如下所示的数组:
z = (array( [ [1], [2], [3]] ),
array( [[10],[11],[12]] )
)
我想用一个简单的for循环使用两个变量迭代它们:
for x, y in z:
print("it worked")
self.doStuff(x, y)
...但它会抛出错误:
ValueError: too many values to unpack (expected 2)
我用Google搜索了这个错误。许多人似乎建议使用.split()方法或.items()。我不确定,在哪里添加,因为不属于元组。如何正确执行此for循环?谢谢你的帮助。
答案 0 :(得分:2)
该行
for x, y in z:
假设(至少在Python2.7中)z
中的每个元素都可以是tuple unpacked。如果z
中的每个元素都是一对元组,那就是这种情况:
In [23]: for x, y in [(1, 2), (3, 4)]:
...: pass
...:
对于你的情况,可能只是你想要
x, y = z
这适用于我:
In [19]: z = (array( [ [1], [2], [3]] ),
...: array( [[10],[11],[12]] )
...: )
In [20]: x, y = z
In [21]: x
Out[21]:
array([[1],
[2],
[3]])
In [22]: y
Out[22]:
array([[10],
[11],
[12]])
答案 1 :(得分:2)
读到另一个答案可能是我误解了你想要的东西。
您也可以使用
for x,y in zip(*z):
解压缩z元组。
输出是:
it worked
[1] [10]
it worked
[2] [11]
it worked
[3] [12]