Python如何在列表每2个元素后插入指定值
Python列表每N个元素后插入指定值解决方案
错误原因
- 你直接在遍历原列表的过程中调用
insert()修改列表,会动态增加列表长度,打乱原有索引和遍历顺序,导致无法遍历到完整的原始元素 - 原有判断逻辑仅在
count == 2时触发一次插入,无法实现每2个元素就插入一次的需求
正确实现(新手友好版)
我们采用新建列表存储结果的方案,避免修改原列表带来的索引混乱问题,逻辑清晰易理解:
# 原始列表 zz = ['a','b','c','d','f'] # 要插入的指定值 insert_val = "Hero" # 间隔的元素个数 interval = 2 new_zz = [] for index, value in enumerate(zz): new_zz.append(value) # 每攒够interval个元素,且不是最后一个元素时,插入指定值 if (index + 1) % interval == 0 and index != len(zz) - 1: new_zz.append(insert_val) # 如果需要覆盖原变量可以加这行 zz = new_zz print(zz)
运行后输出和你预期的一致:['a', 'b', 'Hero', 'c', 'd', 'Hero', 'f']
逻辑说明
- 用
enumerate()可以同时拿到每个元素的索引和对应值,不需要自己维护计数器 - 每次插入判断加了
index != len(zz)-1的条件,是为了避免原始列表长度刚好是interval的整数倍时,末尾多插入一个多余的指定值 - 全程不修改原列表,遍历逻辑稳定,不会出现顺序错乱的问题
内容的提问来源于stack exchange,提问作者Learn377
相关产品推荐
相关产品推荐

