Python的秘密生活:漏洞

发布: (2026年1月17日 GMT+8 12:01)
2 min read
原文: Dev.to

Source: Dev.to

在遍历列表时修改列表的陷阱(以及如何修复)

Timothy 正盯着屏幕上的传感器数据列表。

“我已经让它删除错误了。我明确写了代码。但它总是漏掉它们。”

他有一个温度读数列表,其中任何低于零的值都被视为错误。他的循环如下:

# Timothy's "Cleanup" Loop
temperatures = [10, -5, -2, 15, 20]

for temp in temperatures:
    if temp = 0]

print(f"Cleaned List: {clean_temperatures}")

输出

Cleaned List: [10, 15, 20]

这种做法完全避免了就地修改,通常更快且更清晰。

Margaret 的速查表

  • 陷阱: 在循环 期间 切勿向列表添加或删除项目。
  • 症状: 删除时出现跳过的项目,添加时出现无限循环。
  • 原因: 改变列表长度会导致索引移动,而循环计数器仍然向前推进。

修复方法

  • 遍历副本: for item in my_list[:](快速修复)。
  • 列表推导式: [x for x in my_list if condition](过滤的最佳选择)。
  • 逆向遍历: for item in reversed(my_list):(进阶用法;在必须就地修改且不想复制时很有用)。
Back to Blog

相关文章

阅读更多 »

天才大师与他高效的笨蛋仆人

“为什么!为什么!呃!” 当我看到Sanni抓住一把自己的头发并用力拉扯时,我的嘴角上扬。我靠在椅子上,注视着她眼中凶狠的光芒……