如何将两个列表按交替元素顺序合并为新列表?
交替合并两个列表的解决方案
你需要将两个列表交替合并:取第一个列表的第n个元素,接着取第二个列表的第n个元素,依次排列。原代码中直接用list1 + list2是将第二个列表整体追加到第一个列表末尾,所以无法得到预期结果。
原代码与问题
原代码:
count = 12 list = list(range(count)) list1 = [] list2 = [] for x in range(0, count, 4): list1.append(x) for y in range(3, count, 4): list2.append(y) # 直接拼接不符合需求 newlist = list1 + list2 print(newlist) print(list)
当前输出:
newlist = [0, 4, 8, 3, 7, 11]
预期输出:
newlist = [0, 3, 4, 7, 8, 11]
解决方案
方法1:循环遍历配对元素
通过zip()函数将两个列表的对应元素配对,再依次添加到新列表中:
newlist = [] for a, b in zip(list1, list2): newlist.append(a) newlist.append(b)
方法2:列表推导式简化写法
用嵌套列表推导式实现同样逻辑,代码更简洁:
newlist = [item for pair in zip(list1, list2) for item in pair]
运行以上任意一种方法,都能得到你想要的交替排列结果。
内容的提问来源于stack exchange,提问作者Renan Andrade
相关产品推荐
相关产品推荐

