我正在尝试在列表列表中使用以下代码来创建新的列表列表,其新元素是旧列表中列表中元素的特定组合...如果这有意义!这是代码:
for index, item in outputList1:
outputList2 = outputList2.append(item[6:].extend(outputList1[index+1][6:]))
但是,我收到“解压缩的值太多”错误。我似乎甚至得到了以下代码的错误:
for index, item in outputList1:
pass
我可能做错了什么?
答案 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