如何优雅地在C# List的各元素间插入任意元素?
在数组元素间插入指定元素的优雅实现
核心逻辑
数组长度小于2时直接返回原数组;长度≥2时,给除最后一个元素外的每个元素后面加上插入元素,再拼接最后一个元素。
Python 实现方案
方案一:列表推导式+zip
def insert_between(arr, elem): if len(arr) < 2: return arr.copy() return [x for pair in zip(arr, [elem]*(len(arr)-1)) for x in pair] + [arr[-1]]
测试效果:
- 输入
[2,3,4,5,6,7]插入1→[2,1,3,1,4,1,5,1,6,1,7] - 输入
[2]→[2] - 输入
[]→[]
方案二:用itertools简化拼接
from itertools import chain def insert_between(arr, elem): if len(arr) < 2: return arr.copy() return list(chain.from_iterable(zip(arr, [elem]*(len(arr)-1)))) + [arr[-1]]
极简写法
def insert_between(arr, elem): return arr if len(arr) < 2 else sum(([x, elem] for x in arr[:-1]), []) + [arr[-1]]
注意点
- 返回副本是为了避免后续操作意外修改原数组,若不需要保护原数组,直接返回
arr即可 - 所有方案都严格处理了短数组的边界情况,保证
[2]和[]原样返回
内容的提问来源于stack exchange,提问作者Party Ark
相关产品推荐
相关产品推荐

