繁体   English   中英

如何交错 python 中两个列表中的元素

[英]How to interleave elements from two lists in python

list1 = ["a", "b", "c"]
list2 = [1, 2, 3]

list3 = list1 + list2
print(list3)

output ---

['a', 'b', 'c', 1, 2, 3]

但我想要这样的 output ---

['a',1,'b',2,'c',3]

请帮我

您可以创建一个for循环并使用zipextend

list1 = ["a", "b", "c"]
list2 = [1, 2, 3]

list3 = []
for items in zip(list1, list2):
    list3.extend(items)

print(list3)

或者一个列表理解(但是它既慢又不可读,仍然将它保留在这里只是为了提供有关如何处理必须在理解中扩展可迭代的情况的信息)

list1 = ["a", "b", "c"]
list2 = [1, 2, 3]

list3 = [c for items in zip(list1, list2) for c in items]
print(list3)
from itertools import chain
list1 = ["a", "b", "c"]
list2 = [1, 2, 3]

result = list(chain(*zip(list1, list2)))
print(result)

正如@juanpa.arrivillaga 所提到的,作为[更好] 的替代方案(因为它会被懒惰地评估):

result = list(chain.from_iterable(zip(list1, list2)))

蛮力合并将 go 是这样的:

 list1 = ['a', 'b', 'c'] list2 = [1, 2, 3] list3 = [] ## merge two list with output like ['a',1,'b',2,'c',3] for i in range(len(list1)): list3.append(list1[i]) list3.append(list2[i]) print(list3)

更好的方法是使用上面的 itertool 或链!

如果列表长度相同,可以 zip 列表并使用list.extend方法:

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

Output:

['a', 1, 'b', 2, 'c', 3]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM