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)
通过分配y至z,你没有创建列表的副本.您只是创建了对同一列表对象的另一个引用.
如果您想y成为列表的副本,则需要显式创建此类副本:
z = list(y)
Run Code Online (Sandbox Code Playgroud)
要么
z = y[:]
Run Code Online (Sandbox Code Playgroud)