列表清单和“解压缩的值太多”

时间:2010-08-02 08:22:08

标签: python

我正在尝试在列表列表中使用以下代码来创建新的列表列表,其新元素是旧列表中列表中元素的特定组合...如果这有意义!这是代码:

 for index, item in outputList1:
    outputList2 = outputList2.append(item[6:].extend(outputList1[index+1][6:]))

但是,我收到“解压缩的值太多”错误。我似乎甚至得到了以下代码的错误:

    for index, item in outputList1:
       pass

我可能做错了什么?

2 个答案:

答案 0 :(得分:20)

for语句迭代迭代 - 在列表的情况下,它逐个迭代内容,因此在每次迭代中,有一个值可用。

使用for index, item in list:时,您试图将一个值解压缩为两个变量。这适用于for key, value in dict.items():,它以任意顺序迭代dicts键/值。由于您似乎想要一个数字索引,因此存在一个函数enumerate(),它获取可迭代的值,以及它的索引:

for index, item in enumerate(outputList1):
    pass

编辑:由于你的问题的标题提到'列表列表',我应该指出,当迭代列表时,解压缩到多个变量将工作如果每个列表项是本身是一个可迭代的。例如:

list = [ ['a', 'b'], ['c', 'd'] ]
for item1, item2 in list:
    print item1, item2

这将输出:

a b
c d

正如所料。这与dicts类似,只有你可以在包含的列表中有两个,三个或多个项目。

答案 1 :(得分:11)

你忘了使用枚举,你的意思是这样做:

for index,item in enumerate(outputList1) :
  pass