您不能那样做,您只是更改绑定到名称i 的值。在for 循环的每次迭代中,i 被绑定到列表中的一个值。从某种意义上说,它不是指针,通过更改 i 的值,您正在更改列表中的值。相反,正如我之前所说,它只是一个名称,您只是更改名称所指的值。在本例中,i = i + 1 将i 绑定到值i + 1。所以你实际上并没有影响列表本身,你必须通过索引来设置它。
>>> L = [1,2,3,4,5]
>>> for i in range(len(L)):
L[i] = L[i] + 1
>>> L
[2, 3, 4, 5, 6]
一些pythonistas可能更喜欢这样迭代:
for i, n in enumerate(L): # where i is the index, n is each number
L[i] = n + 1
但是,您可以通过列表推导轻松获得相同的结果:
>>> L = [1,2,3,4,5]
>>> L = [n + 1 for n in L]
>>> L
[2, 3, 4, 5, 6]
欲了解更多信息:http://www.effbot.org/zone/python-objects.htm