小白列表疑问
如果是按照第小甲鱼课堂上第二段的说法,第一段的new不是应该等于吗,不是说列表之间直接相等会因为被拷贝的列表发生改变而改变吗?old=
new=old
old=
print(new)
list1=
list2=list1
list3=list1[:]
list1.sort()
print(list1, list2, list3)
直接赋值的话即使是切片也不会跟着变化 参考:https://fishc.com.cn/thread-164536-1-1.html 本帖最后由 heidern0612 于 2020-4-9 07:59 编辑
变量old和new只是指向内存地址和的引用。
引用虽然变化了(old重新指向),但是内存地址始终没变化(new还始终指向1,2,3,4,5这个列表)。
如果你还是不太明白,请看这个:戳我前进 列表等号赋值世界上是贴标签。你将变量名重新赋值,意味着将这个标签从原来的地址上撕下来贴到新的地址上去了
list3=list1[:]这个才是拷贝,列表拷贝,是复制其内容,但是两者不是同一个列表。
python细节之2、变量名与标签 变量的赋值与修改
用id()方法打印下内存地址看下就明白了
页:
[1]