Python 如何将两个列表依次合并为一个新列表?

Python 如何将两个列表依次合并为一个新列表?,python,list,Python,List,我正在使用python3.x中的列表 我想合并两个列表: list1 = [1, 2, 3, 4] list2 = [7, 8, 9, 19] 预期输出如下: list3 = [1, 7, 2, 8, 3, 9, 4, 19] 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,

我正在使用
python3.x
中的列表

我想合并两个列表:

list1 = [1, 2, 3, 4]
list2 = [7, 8, 9, 19]
预期输出如下:

list3 = [1, 7, 2, 8, 3, 9, 4, 19]
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]


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

您只需使用
zip
在两个列表的总和上使用
functools

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]

简单地说,我们可以这样使用
列表理解

list3 = [1, 7, 2, 8, 3, 9, 4, 19]
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]

例如:

from itertools import chain

list(chain(*zip(v1, v2)))
这两个列表合在一起,然后通过以下方式变平:

请尝试以下代码:

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]

zip(list1,list2)
@rdas,它将给出一个zip对象,但即使您将其强制转换为一个列表,您也会得到
[(1,7)、(2,8)、(3,9)、(4,19)]
,它不会像asked@ChatterOne这是一个提示-因为这听起来像是一个家庭作业问题。在这种方法中,创建了许多中间列表对象(在reduce函数中)。不要使用重复添加来连接列表。这是糟糕的性能。谢谢分享。我将研究计算性能。如果这完美地回答了您的问题,那么请随意将其标记为已接受并投票。