Python:合并嵌套列表

时间:2011-10-18 11:30:09

标签: python merge nested-lists

初学者到python这里。

我有两个我要合并的嵌套列表:

list1 = ['a',
         (b, c),
         (d, e),
         (f, g, h) ]

list2 = [(p,q),
         (r, s),
         (t),
         (u, v, w) ]

我正在寻找的输出是:

list3 = [(a, p, q),
         (b, c, r, s),
         (d, e, t),
         (f, g, h, u, v, w) ]

这可以在没有任何外部库的情况下完成吗? 注意:len(list1)= len(list2)

4 个答案:

答案 0 :(得分:12)

使用zip功能和list comprehensions

的强大功能
list1 = [('a', ),
        ('b', 'c'),
        ('d', 'e'),
        ('f', 'g', 'h') ]

list2 = [('p', 'q'),
        ('r', 's'),
        ('t', ),
        ('u', 'v', 'w') ]

print [a + b for a, b in zip(list1, list2)]

答案 1 :(得分:3)

from operator import add
list3 = map(add, list1, list2)

答案 2 :(得分:0)

如果内部列表/元组中的顺序不重要,则可以使用数学集操作。

打印[tuple(set(a)| set(b))a,b in zip(x,y)]

set(a)| set(b)将iterables a和b转换为sets并取两组的并集。然后根据需要在输出格式中将它们转换回元组。

由于您是python的初学者,强烈建议您掌握列表推导。它太强大和简洁。除了使您的代码更加“pythonic”之外,列表推导还可以作为“map”和“filter”函数的更友好的替代品。

答案 3 :(得分:0)

简单的

list_3 = []
list_3.extend(list_1 + list_2)