请问各位大佬,为什么上面的b不会改变而下面的会改变?
>>> a = 1>>> b = a
>>> a = 2
>>> b
1
>>>
>>> a =
>>> b = a
>>> a.sort(reverse = 1)
>>> b
集合类型和基本类型不一样呀 它们的类型不一样,
基本类的赋值完了就给了一个明确的基本类的地址。
列表由于赋值以后实际上赋的地址值,所以当列表的内容变化以后,两个都会变。
如果列表类的想赋值而不继承地址则用
a = []
b = a.copy() 弓戈 发表于 2019-6-27 15:05
它们的类型不一样,
基本类的赋值完了就给了一个明确的基本类的地址。
列表由于赋值以后实际上赋的地址值 ...
表示“列表由于赋值以后实际上赋的地址值,所以当列表的内容变化以后,两个都会变。”这句话没看懂 雨女无瓜 发表于 2019-6-27 21:35
表示“列表由于赋值以后实际上赋的地址值,所以当列表的内容变化以后,两个都会变。”这句话没看懂
就是列表类型的赋值过程传递的是他们的地址,
如果这时候修改了a的话,b也是指向这个地址,所以b也跟着改。
可以用id()来查看对应得内存地址,你跑一下下面这个程序就一目了然了。
a = list()
b = a
c = a.copy()
print(id(a),id(b),id(c))
页:
[1]