在python中分配值,结果与预期不符

emh*_*emh -1 python variables reference

我有这个代码:

x = 'x'
y = []
y.append(x)
z = y
z.append('a')
x = 'X'

print "x:", x
print "y:", y
print "z:", z
Run Code Online (Sandbox Code Playgroud)

输出:

x: X
y: ['x', 'a']
z: ['x', 'a']
Run Code Online (Sandbox Code Playgroud)

我知道这是正确的输出,但我很难理解它产生的原因

y: ['x', 'a']
Run Code Online (Sandbox Code Playgroud)

代替

y: ['x']
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

通过分配yz,你没有创建列表的副本.您只是创建了对同一列表对象的另一个引用.

如果您想y成为列表的副本,则需要显式创建此类副本:

z = list(y)
Run Code Online (Sandbox Code Playgroud)

要么

z = y[:]
Run Code Online (Sandbox Code Playgroud)