擅长:python、mysql、java
<p>奥斯卡·洛佩兹是对的,他的解决方案会奏效。您面临的问题是由于python中的列表是可变的。这是什么意思?你知道吗</p>
<p>好吧,假设我们有一些不可变的变量,比如整数。我们可以,比如说</p>
<pre><code>x = 3
y = x
x = x + 1
print "x =", x, "y =", y
</code></pre>
<p>正如预期的那样,它的回报是:</p>
<pre><code>x = 4 y = 3
</code></pre>
<p>这是因为行“y=x”在变量y的内部创建了一个整数x的拷贝。你知道吗</p>
<p>如果我们对列表做类似的操作,我们会得到不同的结果。你知道吗</p>
<pre><code>x = [1,2,3]
y = x
x.append(4)
print "x =", x, "y =", y
</code></pre>
<p>返回</p>
<pre><code>x = [1,2,3,4] y = [1,2,3,4]
</code></pre>
<p>刚才发生了什么?因为列表是可变的,当我们在这里让y等于x时,python没有在y中创建x的副本,而是让y指向x指向的相同数据。所以,当我们改变x时,y似乎也随之发生了神奇的变化,这是有意义的,因为变量y指的是x所做的同样的事情。x和y与列表和字典等可变类型之间的连接持续到“y=x”行之外。你知道吗</p>
<p>为了抵消这一点,y=x[:]起作用,这与</p>
<pre><code>y = [] # y is a brand new list!
for elem in x:
y.append(elem)
</code></pre>