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

Python:在列表每个5后追加0时列表长度未正确更新的问题

问题原因

你的代码中range(len(mylist1))在循环启动时就生成了基于初始列表长度(7)的索引序列(0到6)。但每次插入0后,列表长度增加,后续元素会向后移位。当处理到第二个5(初始索引5)并插入0后,最后一个5被移到了索引8,而循环只到索引6,导致这个5未被检测到,也就没追加0。

解决方案

方法1:倒序遍历

从列表末尾往前遍历,插入操作不会影响未遍历元素的索引,能确保每个5都被处理:

mylist1 = [1,4,5,2,7,5,5]

for i in range(len(mylist1)-1, -1, -1):
    if mylist1[i] == 5:
        mylist1.insert(i+1, 0)
print(f'output: {mylist1}')

方法2:遍历原列表的副本

通过遍历原列表的副本,保证遍历的是初始状态的所有元素,不受原列表插入操作的影响:

mylist1 = [1,4,5,2,7,5,5]

for i, num in enumerate(mylist1.copy()):
    if num == 5:
        mylist1.insert(i+1, 0)
print(f'output: {mylist1}')

两种方法都能直接修改原列表,得到预期输出[1,4,5,0,2,7,5,0,5,0]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:45:40