gpt4 book ai didi

python - 为什么列表以持久的方式在 Python 中链接?

转载 作者:行者123 更新时间:2023-11-28 19:31:01 25 4
gpt4 key购买 nike

设置了一个变量。另一个变量设置为第一个。第一个改变值。第二个没有。自古以来,这就是编程的本质。

>>> a = 1
>>> b = a
>>> b = b - 1
>>> b
0
>>> a
1

然后我将其扩展到 Python 列表。声明并附加了一个列表。另一个列表被声明为等于第一个。第二个列表中的值发生变化。奇怪的是,第一个列表中的值虽然没有直接作用,但也会发生变化。

>>> alist = list()
>>> blist = list()
>>> alist.append(1)
>>> alist.append(2)
>>> alist
[1, 2]
>>> blist
[]
>>> blist = alist
>>> alist.remove(1)
>>> alist
[2]
>>> blist
[2]
>>>

这是为什么?

我如何防止这种情况发生——我希望 alist 不受 blist 更改的影响(如果你愿意的话,它是不可变的)?

最佳答案

Python 变量实际上不是变量,而是对对象的引用(类似于 C 中的指针)。在 http://foobarnbaz.com/2012/07/08/understanding-python-variables/ 中对初学者有很好的解释。

让自己相信这一点的一种方法是尝试这个:

a=[1,2,3]
b=a
id(a)
68617320
id(b)
68617320

id 返回给定对象的内存地址。由于两个列表都相同,这意味着更改一个会影响另一个,因为它们实际上是同一件事。

关于python - 为什么列表以持久的方式在 Python 中链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17723840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com