dong555 发表于 2023-5-24 09:13

python一个列表变量值赋值给另外一个列表变量相当于c++的引用吗

比如下面代码   d赋值给d2,d怎么变d2就怎么变,变顺序变参数都一样

>>> d=
>>> d2=d
>>> d2

>>> d.sort()
>>> d2

>>> d.reverse()
>>> d2

>>> d.sort()
>>> d2

>>> d.append(100)
>>> d2

>>>

ALDShD 发表于 2023-5-24 09:29

jjjzw 发表于 2023-5-24 09:50

对可变类型的对象(列表,字典,集合)进行赋值会共用内存地址,类似c++中的引用

WuYule 发表于 2023-5-24 10:11

嗯,这是对象类型而不是基本类型。

Nettos 发表于 2023-5-24 10:26

import copy

d =
d2 = copy.deepcopy(d)

d = 3

print(d)
print(d2)



基本数据类型与引用数据类型,你可以看看

三滑稽甲苯 发表于 2023-5-24 12:19

用 d2=d[:] 也可以得到一份copy

lbbas 发表于 2023-5-29 15:41

差不多的意思。d和d2都指向同一个对象,《流畅的Python》一书中将其称为便利贴(变量贴在对象上)。id(d) == id(d2)。由于列表是可变数据类型,有些操作会就地修改对象,这样指向对象的变量就会都共享这次更改。而如果是不可变类型(如tuple),部分操作没法改变原有对象,只能新建一个对象将结果存入。此时id(d)!=id(d2)

oneai 发表于 2023-5-29 15:48

页: [1]
查看完整版本: python一个列表变量值赋值给另外一个列表变量相当于c++的引用吗