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

Python访问列表元素的不同方式:两类for循环修改列表的差异

Python两种列表遍历修改方式的逻辑差异

基于示例列表numbers = [0,1,2,3,4],两段代码的核心差异在于操作对象完全不同,结合Python的变量引用规则,具体区别如下:

第一段代码(无法修改原列表)

for item in numbers:
    item +=1
  • 遍历列表时,item是仅在循环内部生效的临时变量,会依次拷贝原列表中每个元素的取值(本例中是不可变的整数类型)
  • 执行item +=1仅修改了临时变量本身的值,没有关联到原列表的存储地址,所以完全不会改动原列表

第二段代码(可正常修改原列表)

for i in range(len(numbers)):
    numbers[i] +=1
  • 先通过列表长度生成对应的下标序列,遍历的是列表的位置索引i
  • 执行numbers[i] +=1时,是通过索引直接定位到原列表对应位置的存储地址,直接修改该地址存放的值,改动会直接作用到原列表上

补充说明

如果列表中存储的是字典、列表这类可变类型,第一种循环中如果修改可变对象的内部属性(例如item["key"] = 1),改动可以同步到原列表;但如果是对item本身重新赋值(例如item = {"new_key": 2}),依然不会影响原列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:00