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

Python遍历列表时添加元素为何陷入无限循环?

为什么你的Python循环会无限运行?

嘿,这个问题我之前帮朋友排查过,其实核心原因和Python遍历列表的底层机制有关,我给你掰碎了说:

核心问题:你在迭代列表的同时修改了它本身

当你写for v in values的时候,Python并不是先把values里的元素全部存起来再慢慢遍历——它是直接跟着原列表的实时动态走的。咱们一步步捋你的代码执行流程:

  • 初始状态:values = [2,3,4],列表长度是3;
  • 第一次循环:取出第一个元素2,执行values.append([v,255,255]),此时values变成[2,3,4, [2,255,255]],长度变成4;
  • 第二次循环:取出第二个元素3,append后列表长度变成5;
  • 第三次循环:取出第三个元素4,append后列表长度变成6;
  • 关键来了!循环根本不会停——因为现在列表有6个元素,迭代器会继续去取第4个元素(就是你刚加的那个[2,255,255]),然后又执行append,列表长度再加1...
  • 这么往复下去,每次循环都给列表加新元素,迭代器永远有下一个元素可以拿,循环自然就无限跑下去了。

快速解决方法

要避免这种情况,你只需要迭代原列表的副本,让迭代的对象和你修改的原列表分开就行。比如:

values = [2,3,4]
# 两种方式都能创建原列表的副本
for v in list(values):
# 或者用 values.copy()
# for v in values.copy():
    values.append([v,255,255])

这样循环只会遍历初始的3个元素,后续的append操作不会影响迭代的过程,循环就能正常结束啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:07:25