元组拆箱的混乱行为 - 用于循环在元组列表中


I have a list of tuples `data`:
data =[(array([[2, 1, 3]]), array([1])),
 (array([[2, 1, 2]]), array([1])),
 (array([[4, 4, 4]]), array([0])),
 (array([[4, 1, 1]]), array([0])),
 (array([[4, 4, 3]]), array([0]))]

为简单起见,此列表在这里只有5个元组。

当我运行以下代码时,我似乎可以打开每个元组包装每个迭代:

for x,y in data2:
    print(x,y)

output:
[[2 1 3]] [1]
[[2 1 2]] [1]
[[4 4 4]] [0]
[[4 1 1]] [0]
[[4 4 3]] [0]

This also works:
for x,y in data2[:2]:
    print(x,y)

output:
[[2 1 3]] [1]
[[2 1 2]] [1]

However, when I take only a single tuple from the list:
for x,y in data2[0]:
    print(x,y)

output: 
ValueError                                Traceback (most recent call last)
<ipython-input-185-1eed1fccdb3a> in <module>()
----> 1 for x,y in data2[0]:
      2     print(x,y)
ValueError: not enough values to unpack (expected 2, got 1)

我对较早情况下的分组的打开方式感到困惑,防止最后一个案例也成功打开了元组。

谢谢。

在您通过list循环的前两种情况下,在您访问tuple

的最后一个情况下

不确定您要实现的目标,而不是data[0]data[:1]将起作用。

如果您的数据看起来像这样:

data =[([[2, 1, 3]], [1]),
([[2, 1, 2]], [1]),
([[4, 4, 4]]), [0]),
([[4, 1, 1]], [0]),
([[4, 4, 3]], [0])]
for [a], b in data:
    print a, b

输出:

[2, 1, 3] [1]
[2, 1, 2] [1]
[4, 4, 4] [0]
[4, 1, 1] [0]
[4, 4, 3] [0]

最新更新