zfz*_*zfz 3 python iteration list
我想在Python中重新分配列表中的每个项目.
In [20]: l = [1,2,3,4,5]
In [21]: for i in l:
....: i = i + 1
....:
....:
Run Code Online (Sandbox Code Playgroud)
但名单根本没有变化.
In [22]: l
Out[22]: [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会这样.任何机构都可以详细解释列表吗?谢谢.
你不能这样做,你只是改变绑定到名称的值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]
Run Code Online (Sandbox Code Playgroud)
一些pythonistas可能更喜欢像这样迭代:
for i, n in enumerate(L): # where i is the index, n is each number
L[i] = n + 1
Run Code Online (Sandbox Code Playgroud)
但是,您可以使用列表理解轻松实现相同的结果:
>>> L = [1,2,3,4,5]
>>> L = [n + 1 for n in L]
>>> L
[2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息:http://www.effbot.org/zone/python-objects.htm
归档时间: |
|
查看次数: |
2126 次 |
最近记录: |