For 循环、追加和 += 增量运算符

For-loop, append, and += increment operator

a=[]
a.append(0)
a.append(0)
print(a)
for i in a:
    i+=1
print(a)

我认为它应该打印 [0,0] [1,1] 但它打印 [0,0] [0,0].

怎么了?

当您使用 for i in a 时,在每次迭代中您将 a 的一个元素分配给名为 i 的变量,并且当您对 i 执行操作时],更改不会应用于 a 的元素。尝试:

for i in range(0, len(a)):
    a[i] += 1

您正在更改 i 的值,但并未更改列表 a 的元素。 如果你想改变那个列表的元素的值,你可以这样做:

a=[]
a.append(0)
a.append(0)
print(a)

for index, element in enumerate(a):
    element+=1
    a[index] = element

print(a)

您需要更改 a 中每个元素的值而不是 i 中的值,因为这不会更改 a 中的元素。要更改 a 上的每个元素,您可以执行以下操作:

a = [0,0]
print(a) # [0,0]
for i in range(len(a)):
    a[i] += 1
print(a) # [1,1]

或使用函数 enumerate() 如果您想遍历列表而不是范围:

a = [0,0]
print(a) # [0,0]
for index, _ in enumerate(a):
    a[index] += 1
print(a) # [1,1]