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

Python中for循环迭代同名列表变量输出异常的原因解析

循环迭代列表后重复执行输出异常的原因

哈哈,这个坑我刚学Python的时候也踩过!先看看你遇到的场景:

people = ['mago','pipa','john','mat']
>>> for people in people: print(people)
mago
pipa
john
mat
>>> for people in people: print(people)
m
a
t
>>> for people in people: print(people)
t
>>> for people in people: print(people)
t

问题的核心就是你把循环的迭代变量和原列表用了同一个名字people,直接把原列表给覆盖了,一步步拆解给你看:

  • 第一次循环启动时,people是我们定义的列表['mago','pipa','john','mat']。循环过程中,每一次迭代都会把列表里的当前元素赋值给people变量——等循环跑完,people已经完全不是原来的列表了,它变成了列表的最后一个元素:字符串'mat'。
  • 第二次循环再写for people in people:时,这里的people已经是字符串'mat'了。而字符串在Python里是可迭代对象,会逐个返回它的字符,所以循环会依次输出m、a、t。循环结束后,people又被更新成了最后一个字符't'。
  • 从第三次循环开始,people已经是单字符字符串't'了,迭代它的时候只会返回't'这一个字符,所以每次循环都只输出t。哪怕你再跑N次,people始终是't',结果也就不会变了。

解决办法超级简单:把循环的迭代变量改成别的名字,比如person,这样就不会覆盖原列表了:

people = ['mago','pipa','john','mat']
for person in people:
    print(person)
# 不管跑多少次,输出都是正常的列表元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:33:06