如何将两个列表依次合并到一个新列表中?

时间:2019-10-14 06:56:16

标签: python list

我正在使用Python 3.x中的列表。

我想合并两个列表:

list1 = [1, 2, 3, 4]
list2 = [7, 8, 9, 19]

预期的输出如下:

list3 = [1, 7, 2, 8, 3, 9, 4, 19]

我不允许使用任何高级数据结构,而需要以pythonic方式编写。

5 个答案:

答案 0 :(得分:4)

我们可以像这样使用list comprehension

list1 = [1, 2, 3, 4]
list2 = [7, 8, 9, 19]

list3 = [v for v1_v2 in zip(list1, list2) for v in v1_v2]

assert list3 == [1, 7, 2, 8, 3, 9, 4, 19]

答案 1 :(得分:2)

例如:

from itertools import chain

list(chain(*zip(v1, v2)))

答案 2 :(得分:2)

zip()将两个列表放在一起,然后用itertools.chain.from_iterable()展平:

>>> from itertools import chain
>>> list1 = [1,2,3,4]
>>> list2 = [7,8,9,19]
>>> list(chain.from_iterable(zip(list1, list2)))
[1, 7, 2, 8, 3, 9, 4, 19]

答案 3 :(得分:1)

您可以使用reduce在两个列表的总和中使用functools中的zip

from functools import reduce
from operator import add

list1 = [1,2,3,4]
list2 = [7,8,9,19]

x = list(reduce(add, zip(list1, list2)))
x
[1, 7, 2, 8, 3, 9, 4, 19]

答案 4 :(得分:0)

尝试以下代码:

list1 = [1, 2, 3, 4]
list2 = [7, 8, 9, 19]

new_list = []
for i in range(len(list1)):
    new_list.extend([list1[i], list2[i]])
print(new_list)

输出:

[1, 7, 2, 8, 3, 9, 4, 19]