擅长:python、mysql、java
<p>让我们看一下您的代码,但首先,我们将把函数声明模式设置为顶部,以便执行顺序变得更清晰</p>
<pre><code>def keeps(x):
y = x[:] #Here you are creating a modifiable copy of the original x list and referencing it with y
y[1] = 2
return y
def changes(x):
y = x # Here you are just referencing x itself with a new name y
y[1] = 2
return y
a = [1,1,1]
aout = keeps(a)
print(a, aout)
aout = changes(a)
print(a, aout)
</code></pre>
<p>基本上,如果您只是将另一个变量名分配给一个列表,那么您将为同一个对象指定两个名称,因此内容中的任何更改都可能影响两个“列表”。当您使用<code>y = x[:]</code>时,实际上是在内存中通过列表切片创建<code>x</code>列表的新副本,并将新变量名<code>y</code>分配给该列表的新副本</p>