如何在Python中重新分配列表中的项目?

2024-01-03

我想在 Python 中重新分配列表中的每个项目。

In [20]: l = [1,2,3,4,5]
In [21]: for i in l:
   ....:     i = i + 1
   ....:     
   ....:     

但名单根本没有改变。

In [22]: l
Out[22]: [1, 2, 3, 4, 5]

我想知道为什么会这样。任何人都可以详细解释该列表迭代吗?谢谢。


你不能那样做,你只是改变绑定到名称的值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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中重新分配列表中的项目? 的相关文章