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

遍历Python列表时,获取的是元素副本还是原对象本身?

Python列表遍历:循环变量是原对象还是副本?

遍历Python列表时,循环变量是原列表元素的引用,不是元素的副本,但要区分两种操作的差异:

1. 修改对象本身会改变原列表

比如这段代码:

lst = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for i in lst:
    i.append(0)

这里的i指向原列表中的每一个子列表对象,append(0)是直接修改这个子列表对象本身,所以原列表里的元素会跟着变化,最终lst变成[[1, 2, 3, 0], [4, 5, 6, 0], [7, 8, 9, 0]]。

2. 给循环变量重新赋值不影响原列表

再看这段代码:

for i in lst:
    i = 3

i = 3只是把变量i的指向改成了整数对象3,并没有修改原来的子列表对象。原列表里的元素还是原来的子列表,所以lst不会有任何变化。

核心区别

  • 如果操作的是对象的可变方法/属性,会直接改动原列表中的元素,因为你操作的是原对象本身。
  • 如果是给循环变量重新赋值,只是改变了变量的指向,和原列表里的元素无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:55:02