使用python时,如代码所示,当我们在函数内运行'print(a)'时。结果是[2,1,3]。但是,为什么列表b是[[1,2,3]]而c是[[2,1,3]]。
而且,如果我们删除函数的最后一句话(如代码第二部分所示),它将再次正常工作。似乎.append()在函数完成后运行,为什么?
a = [1,2,3]
b = []
c = []
def function():
a[0], a[1] = a[1], a[0]
print(a)
b.append(a)
c.append(a[:])
a[0], a[1] = a[1], a[0]
function()
print(a)
print(b)
print(c)
[2,1,3]
[1,2,3]
[[1,2,3]]
[[2,1,3]]
a = [1,2,3]
b = []
c = []
def function():
a[0], a[1] = a[1], a[0]
print(a)
b.append(a)
c.append(a[:])
function()
print(a)
print(b)
print(c)
[2,1,3]
[2,1,3]
[[2,1,3]]
[[2,1,3]]
似乎
b.append(a)
附加变量a和
c.append(a[:])
附加a的内容。在第一种情况下,将附加变量,因此变量a的更改会更改b的值,因为附加了变量a。在第二种情况下,您只是追加a的内容,而不是变量。首先就像说:
b = [a]
第二个就像在说:
c = [2,1,3]