<p>在这些线处:</p>
<blockquote>
<p>challanging_route = best_route</p>
<p>challanging_route = a</p>
</blockquote>
<p><code>best_route</code>和<code>challanging_route</code>引用内存中相同的<code>id</code>。你知道吗</p>
<p><strong>因此当您更改对象时,两个变量(在您的例子中是<code>challanging_route</code>和<code>best_route</code>)都将引用更改的对象。</strong></p>
<p><strong>内存模式寻址:</strong></p>
<blockquote>
<p><code>best_route</code> > <code>object at 0x9cf10c</code> < <code>challanging_route</code></p>
</blockquote>
<p><strong>获取内存地址:</strong></p>
<pre class="lang-py prettyprint-override"><code>>>> hex(id(challanging_route))
out: 0x7f4f2fcc1588
>>> hex(id(best_route))
our: 0x7f4f2fcc1588
</code></pre>
<p>因此,可以使用<code>copy</code>进行浅层复制,也可以使用<code>deepcopy</code>复制较深的对象。你知道吗</p>
<pre class="lang-py prettyprint-override"><code>import copy
challanging_route = copy.copy(best_route)
</code></pre>
<p><strong>获取内存地址:</strong></p>
<pre class="lang-py prettyprint-override"><code>>>> hex(id(challanging_route))
out: 0x7f4f2fcc1588
>>> hex(id(best_route))
our: 0x7f4f2fcc1587
</code></pre>
<p><strong><a href="https://docs.python.org/2/library/copy.html" rel="nofollow noreferrer">copy in python</a></strong></p>