我是Python新手,我对以下代码感到很困惑:
示例1:
n = 1
m = n
n = 2
print(n) # 2
print(m) # 1
示例2:
names = ["a", "b", "c"]
visitor = names
names.pop()
print(names) # ['a', 'b']
print(visitor) # ['a', 'b']
示例 1 显示
n
为 1,m
为 1。然而,示例 2 显示 names
是 ['a', 'b'],visitor
也是 ['a', 'b'] '].
对我来说,示例 1 和示例 2 很相似,所以我想知道为什么结果如此不同?谢谢你。
在Python中,当你像这样分配一个数组时
a = ['a', 'b', 'c']
b = a
b
现在是对 a
的引用。这意味着 a
上的任何更改都会反映在 b
中,反之亦然。
您可能想要做的是创建一个副本,创建一个名为
a
的 b
副本。
a = ['a', 'b', 'c']
b = a.copy()
现在,当您更改
a
时,b
不会更改,或者如果您更改 b
,a
也不会更改。因为 b
现在是一个具有相同值的全新数组。
a = ['a', 'b', 'c']
b = a.copy()
a.pop()
print(a)
print(b)