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函数中)。不要使用重复添加来连接列表。这是糟糕的性能。谢谢分享。我将研究计算性能。如果这完美地回答了您的问题,那么请随意将其标记为已接受并投票。