珍珠是认真的 发表于 2020-4-9 07:32:46

小白列表疑问

如果是按照第小甲鱼课堂上第二段的说法,第一段的new不是应该等于吗,不是说列表之间直接相等会因为被拷贝的列表发生改变而改变吗?


old=
new=old
old=
print(new)


list1=
list2=list1
list3=list1[:]
list1.sort()
print(list1, list2, list3)

老八秘制 发表于 2020-4-9 07:46:37

直接赋值的话即使是切片也不会跟着变化

zltzlt 发表于 2020-4-9 07:55:20

参考:https://fishc.com.cn/thread-164536-1-1.html

heidern0612 发表于 2020-4-9 07:58:01

本帖最后由 heidern0612 于 2020-4-9 07:59 编辑

变量old和new只是指向内存地址和的引用。

引用虽然变化了(old重新指向),但是内存地址始终没变化(new还始终指向1,2,3,4,5这个列表)。

如果你还是不太明白,请看这个:戳我前进

sunrise085 发表于 2020-4-9 09:28:02

列表等号赋值世界上是贴标签。你将变量名重新赋值,意味着将这个标签从原来的地址上撕下来贴到新的地址上去了


list3=list1[:]这个才是拷贝,列表拷贝,是复制其内容,但是两者不是同一个列表。
python细节之2、变量名与标签 变量的赋值与修改

疾风怪盗 发表于 2020-4-9 12:41:53

用id()方法打印下内存地址看下就明白了
页: [1]
查看完整版本: 小白列表疑问