擅长:python、mysql、java
<p>这是因为您只获得对列表中变量的引用。当你在列表中改变的时候,你所指的只是你所指的东西。最好的解释是<a href="http://www.pythontutor.com/visualize.html#code=old_list%3D%5B1,2,3,4,5%5D%0Afor+num+in+old_list%3A+%0A++++num+%3D+num+%2B+1&mode=display&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&py=2&curInstr=0" rel="nofollow">follow it visually</a>-逐步检查在该链接上找到的执行可视化,它应该非常清楚。在</p>
<p>请注意,可变对象可以在适当的位置发生变化,这将影响列表(因为对象本身将发生更改,而不仅仅是您正在使用的名称所指向的名称)。有关比较,请参见<a href="http://www.pythontutor.com/visualize.html#code=old_list=%5B%5B1%5D,+%5B2%5D,+%5B3%5D,+%5B4%5D,+%5B5%5D%5D%0Afor+num+in+old_list%3a+%0A++++num.append%281%29&mode=display&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&py=2&curInstr=0" rel="nofollow">the visualization here</a>。在</p>
<p>这里最好的选择是<a href="http://www.youtube.com/watch?v=pShL9DCSIUw" rel="nofollow">list comprehension</a>。在</p>
<pre><code>new_list = [num + 1 for num in old_list]
</code></pre>