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

如何用一行代码将列表元素批量插入到另一列表的指定索引位置?

一行代码实现指定位置插入元素

直接用列表推导式结合zip就能搞定,完全不需要itertools:

def insert_function(a, b, keys=None):
    return [item for pair in zip(b, a) for item in pair]

测试你的例子:

a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
print(insert_function(a, b))  # 输出: [5, 1, 6, 2, 7, 3, 8, 4]

为什么这个方法可行?

你的需求本质是把b和a的对应元素两两配对(b[i]和a[i]),然后把每一对按b[i]在前、a[i]在后的顺序展开成平列表。zip(b, a)生成包含这些配对的迭代器,嵌套列表推导式负责把配对逐个拆解开。

如果keys是任意索引怎么办?

要是keys不是刚好和a的元素索引一一对应,比如想插入到任意位置,可以用functools.reduce一行实现:

from functools import reduce

def insert_function(a, b, keys):
    return reduce(lambda res, idx_val: res[:idx_val[0]] + [idx_val[1]] + res[idx_val[0]:], sorted(zip(keys, b)), a.copy())

这里先把keys和b配对并按索引排序(避免插入顺序打乱位置),再用reduce逐个插入到对应位置。比如keys=[1,3]、b=[9,10]时,会返回[1,9,2,3,10,4]。

内容的提问来源于stack exchange,提问作者Nuri Taş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:36:21