[英]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
循环并使用zip
并extend
:
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.