【发布时间】:2019-03-14 16:31:36
【问题描述】:
我有两个嵌套列表,list_a 和 list_b:
list_a=[['a','b'],['c','d','e'],['f','g','f']]
list_b=[[5,7],[2,3,2],[4,7,8]]
我正在尝试生成list_c,这将是将list_a 中的每个元素与list_b 中的相应元素合并的结果,例如list_a[1][1] 与list_b[1][1] 和list_a[1][2] 与list_b[1][2] 等. 生成元组列表。
list_c=[[('a',5),('b',7)],[('c',2),('d',3),('e',2)],[('f',4),('g',7),('f',8)]]
我已经试过了:
list_c=[]
for list1 in list_a:
for list2 in list_b:
list_c.append(list(zip(list1,list2)))
但是这个输出是原始列表中所有可能的元素组合的元组列表的列表:
[[('a', 5), ('b', 7)], [('a', 2), ('b', 3)],
[('a', 4), ('b', 7)], [('c', 5), ('d', 7)],...
[('f', 2), ('g', 3), ('f', 2)],
[('f', 4), ('g', 7), ('f', 8)]]
我觉得我已经接近正确答案了,但缺少一些简单的东西。如何生成我正在寻找的结构的list_c? (保留顺序很重要,因为我想用它来处理 CSV 文件)
这是对此处提出的问题的扩展: Concatenate items in two nested lists to pairs in tuples
但我找不到任何不涉及将结果列表展平为以下内容的类似问题:
list_c=[('a',5),('b',7),('c',2),('d',3),('e',2),('f',4),('g',7),('f',8)]
【问题讨论】:
-
您可以使用主题中的“扁平化方法”:[将两个嵌套列表中的项目连接到元组中的对] (stackoverflow.com/questions/20845767/…) 以获得这样的第一个列表:
[('a',5),('b',7),('c',2),('d',3),('e',2),('f',4),('g',7),('f',8)],然后创建一个空列表,并将前一个添加到其中,不是吗? -
zip文档。
标签: python list nested zip tuples