使用enumerate()时出现“ ValueError:需要多个2个值才能解压”

时间:2018-08-12 18:28:10

标签: python python-2.7 valueerror

我正在尝试使用zip()enumerate()遍历由成对的数组组成的数组的索引和数组的对应元素,但是出现以下错误:

a_1 = [1, 2, 3]
a_2 = [11, 22, 33]
a_3 = [111, 222, 333]


b_1 = [5, 6, 7]
b_2 = [55, 66, 77]
b_3 = [555, 666, 777]

for k in range(1, 10):
    for index, a, b in enumerate(zip([a_1, a_2, a_3],
    [b_1, b_2, b_3])):
        print index, a, b

但是关于第一行,我收到以下错误:

ValueError: need more than 2 values to unpack

2 个答案:

答案 0 :(得分:1)

enumerate返回两元组,但是由于您枚举了一个zip(在您的情况下,它也返回了两元组),因此原始两元组的第二个元素也是两元组。您必须先打开外部元组,然后再打开内部元组:

for index, (a, b) in enumerate(zip([a_1, a_2, a_3],
    [b_1, b_2, b_3])):

答案 1 :(得分:0)

您的元组的结构为(index, (a, b)),而不是(index, a, b)。您需要这样打开它们的包装。

for index, (a, b) in ...