擅长:python、mysql、java
<p>让我们逐行查看您的代码。你知道吗</p>
<pre><code>lista = [1, 2, 3, 4, 5]
</code></pre>
<p>这会将名称<code>lista</code>指向具有值<code>[1, 2, 3, 4, 5]</code>(我们称之为<em>list#1</em>)的列表。你知道吗</p>
<pre><code>listb = lista[:]
</code></pre>
<p>这将复制上面的列表,并将名称<code>listb</code>指向该副本(我们称之为<em>list#2</em>);现在基本上有两个内容相等的列表(<em>list#1</em>和<em>list#2</em>)</p>
<pre><code>lista = 'somethingelse'
</code></pre>
<p>这将导致名称<code>lista</code>指向字符串<code>'somethingelse'</code>;<em>list#1</em>的<strong>引用计数</strong>将减少1;如果不再有任何内容指向它,它的内存将被释放。你知道吗</p>
<pre><code>listb.pop()
</code></pre>
<p>从<em>列表#2</em>中删除最后一个元素,并返回它;<em>列表#2</em>将等于<code>[1, 2, 3, 4]</code>。<em>列表#1</em>,如果它仍然存在,则不会被此操作更改。你知道吗</p>
<p>使用上面的代码,最初存储在<code>lista</code>(<em>list#1</em>)中的list对象既不会更改,也不会在执行<code>listb.pop()</code>时存在于内存*中。你知道吗</p>
<hr/>
<p>*)尽管在Jython和其他非CPython实现中,垃圾收集可能会延迟,因此它可能仍在消耗内存。你知道吗</p>