Python使用for循环插入元素 实现列表前5项各重复一次
Python列表前5个元素重复插入实现
需求说明
初始列表代码如下:
list_1 = [1,2,3,4,5,6,7,8,9,10]
需要通过for循环执行插入操作,实现效果:列表前5个元素各重复1次,第6个及之后的元素取值、顺序保持不变,最终得到目标列表:
list_1 = [1,1,2,2,3,3,4,4,5,5,6,7,8,9,10]
实现思路
如果从列表头部开始正向遍历插入,每次插入元素会让列表长度加1,后续未处理元素的索引会整体后移,很容易出现位置错乱的问题。最简便的方式是倒序遍历前5个元素的索引,这样插入操作只会影响已经处理过的位置,不会干扰还没处理的元素索引,不需要额外计算偏移量。
可运行代码
list_1 = [1,2,3,4,5,6,7,8,9,10] # 倒序遍历前5个元素的索引:从4(对应原列表第5个元素5)到0(对应第1个元素1) for idx in range(4, -1, -1): # 在当前元素的后一位插入和当前值相同的元素 list_1.insert(idx + 1, list_1[idx]) print(list_1)
运行后输出结果和目标完全一致:[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10]
补充说明
如果一定要用正向遍历的方式实现,需要额外维护偏移量记录已经插入的元素个数,每插入一个元素,后续的插入位置就要多往后挪1位,参考代码如下:
list_1 = [1,2,3,4,5,6,7,8,9,10] insert_offset = 0 for i in range(5): current_real_index = i + insert_offset list_1.insert(current_real_index + 1, list_1[current_real_index]) insert_offset += 1
这种写法逻辑和倒序遍历完全等价,但代码更冗余,不推荐优先使用。
内容的提问来源于stack exchange,提问作者Prathap David Carlo
相关产品推荐
相关产品推荐

