擅长:python、mysql、java
<p>您可以使用<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow">list comprehension</a>:</p>
<pre><code>arr = [i + 1 for i in arr]
</code></pre>
<p>这将生成一个新的列表;在上面的示例中,我将结果反弹到相同的名称。你知道吗</p>
<p>如果对列表有多个引用,并且需要就地更改它(以便其他引用可以看到更改),请指定给标识片(<code>[:]</code>)以更新列表的所有索引,而不是重新绑定名称:</p>
<pre><code>arr[:] = [i + 1 for i in arr]
</code></pre>
<p>这将首先创建一个新的list对象,然后Python将非常聪明地看到两个列表的大小相同,并且在再次释放第二个列表之前只在元素之间进行复制。你知道吗</p>
<p>在这种情况下,您甚至可以使用生成器表达式来避免创建额外的列表:</p>
<pre><code>arr[:] = (i + 1 for i in arr)
</code></pre>
<p>这会将原始元素移到一边,以便为新元素腾出空间,但不会为此创建新的Python列表对象。这应该是一个<em>小</em>内存效率更高。你知道吗</p>