python:将两个1D列表合并为一个1D列表

时间:2014-02-24 04:17:21

标签: python list merge

我想合并两个真正意义上的列表:

>>> l1 = [1,2,3,4]
>>> l2 = [9,8,7,6]
>>> merged(l1, l2)
[1,9,2,8,3,7,4,6]

我可以轻松地:

>>> m = []
>>> for i1,i2 in zip(l1,l2):
      m.extend([i1,i2])
>>> m
[1,9,2,8,3,7,4,6]

但我想知道是否有更优雅的东西?

ps:有数以万计的问题要求合并列表,但我发现没有这样做 - 如果我在迷雾中丢失了真正的那个,我道歉!

3 个答案:

答案 0 :(得分:2)

[item for items in zip(l1, l2) for item in items]
# [1,9,2,8,3,7,4,6]

或者你可以像这样使用itertools.chain

from itertools import chain
list(chain.from_iterable(zip(l1, l2)))
# [1,9,2,8,3,7,4,6]

答案 1 :(得分:1)

使用zip和列表理解:

>>> l1 = [1,2,3,4]
>>> l2 = [9,8,7,6]
>>> [x for xs in zip(l1, l2) for x in xs]
[1, 9, 2, 8, 3, 7, 4, 6]

答案 2 :(得分:0)

这个怎么样:

>>> l1 = [1,2,3,4]
>>> l2 = [9,8,7,6]
>>> sum(zip(l1,l2),())
(1, 9, 2, 8, 3, 7, 4, 6)
>>>