你不能那样做,你只是改变绑定到名称的值i
。在每次迭代时for
loop, i
绑定到列表中的值。从某种意义上说,它不是一个指针,通过改变i
您正在更改列表中的值。相反,正如我之前所说,它只是一个名称,您只是更改名称所引用的值。在这种情况下,i = i + 1
, binds 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]
一些 pythonista 可能更喜欢像这样迭代:
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 http://www.effbot.org/zone/python-objects.htm