You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过非排序插入方式,合并两列表得到交替有序结果?

Hey there! 想要把两个列表按照这种交替插入的方式合并成l3 = [1,2,3,4,5,6,7],我这里有几个实用的方案,你可以按需选择:

方法一:手动逐个插入(适合元素数量少的场景)

因为你的列表元素不多,直接用insert()方法指定位置插入就行,非常直观:

l1 = [1,3,5,7]
l2 = [2,4,6]

# 依次插入l2的元素到l1的对应位置
l1.insert(1, l2[0])  # 插入2到索引1的位置
l1.insert(3, l2[1])  # 插入4到索引3的位置(此时l1已经是[1,2,3,5,7],索引3对应3之后的位置)
l1.insert(5, l2[2])  # 插入6到索引5的位置

l3 = l1
print(l3)  # 输出: [1,2,3,4,5,6,7]

方法二:循环批量插入(通用型,适合元素多的情况)

如果你的列表后续可能变长,用循环自动处理插入位置会更省心。观察规律:l2的第i个元素(从0开始计数)需要插入到l1的2*i +1位置(插入后列表长度会变化,但因为我们从左到右依次插入,这个位置公式刚好适用):

l1 = [1,3,5,7]
l2 = [2,4,6]
# 先复制l1,避免修改原列表(如果不需要保留原l1,可以直接操作l1)
l3 = l1.copy()

for i in range(len(l2)):
    l3.insert(2*i + 1, l2[i])

print(l3)  # 输出: [1,2,3,4,5,6,7]

方法三:Zip拼接+展开(更简洁的写法)

利用zip()把l1的前3个元素和l2的元素两两配对,再把配对后的元组展开,最后加上l1的最后一个元素,一行代码就能搞定:

l1 = [1,3,5,7]
l2 = [2,4,6]

# 列表推导式版本,简洁明了
l3 = [x for pair in zip(l1[:-1], l2) for x in pair] + [l1[-1]]
print(l3)  # 输出: [1,2,3,4,5,6,7]

# 或者用循环展开,可读性更强
l3 = []
for a, b in zip(l1[:-1], l2):
    l3.extend([a, b])
l3.append(l1[-1])
print(l3)

小提示

这几种方法都适用于l1的长度比l2多1的情况(也就是你的需求场景),如果后续列表长度关系变化,只需要微调逻辑就能适配~

内容的提问来源于stack exchange,提问作者greatunarine1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:27:45