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

Python中为何无法直接遍历列表元素实现逐个加1?正确写法解析

为什么给列表元素加1的两种写法结果不同?

先看原始列表:

values = [16, 1, 7, 2, 19, 12, 5, 20, 2, 10, 10, 14, 17, 14, 1, 16, 19, 7, 9, 19]

当我们想给列表里每个元素加1时,第一种写法完全不起作用:

无效的写法

for i in values:
    i += 1
print(values)

原因:

这里的i是列表元素的临时副本。循环时Python会把列表当前元素的值复制给i,你对i执行的+=1操作,只是修改了这个临时变量的数值,根本没触及原列表里的元素。循环结束后,原列表values自然没任何变化。

而第二种写法能实现需求:

有效的写法

for i in range(len(values)): 
    values[i] += 1
print(values)

原因:

这种写法是通过索引直接操作原列表元素。range(len(values))生成了列表所有元素的索引,循环时用values[i]直接定位到原列表中第i个位置的元素,对它做+=1时,是直接修改原列表对应位置的元素值,所以循环结束后每个元素都成功加1。

另外,还有更简洁的Python风格写法——列表推导式,效果完全一致:

values = [x + 1 for x in values]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:06:15