呐年樱花落落t 发表于 2022-3-6 12:43:44

高手帮忙看一下这个列表拷贝问题

>>> old =
>>> new = old
>>> old =
>>> print(new)

运行结果



为什么他会打印
他没有用分片拷贝,再修改old的时候,不应该new也要跟着改变吗

我的橙诺纫 发表于 2022-3-6 12:44:09


old重新赋值,指向了新的区域,new没变

nfhge5328483 发表于 2022-3-6 12:44:28

分片是修改内部元素才不修改,你是直接把标签换了

123459300 发表于 2022-3-6 12:44:39

可以这样理解
现在有这样一组数据
我告诉你他既叫old也叫new
然我现在告诉你:从现在开始叫old(言外之意就是只有6能叫old,而12345不能再叫old了,只能叫new)
所以old出来是6,new出来是12345

所以说,这是给字符串取名字的故事,字符串是本体,名字是可变的,我可以给同样内容的一个字符串取好几个名字,也可以把一个名字从字符串A划分给字符串B而不改变字符串的内容

会笑嘀眼睛 发表于 2022-3-6 12:45:02


>>> old =
>>> new = old
>>> old =
>>> print(new)

old = 是重新赋值,它的存储区域已经改变,生成一个新的ID
new = old new的存储ID是第一行old的ID
如果是对第一行old的修改,如old.append(6),那么是在原old 存储ID上的数据进行修改,也就是old列表添加了6这个元素,
因为new和原old的存储ID是一样的,也就是指向同一个标签,原old添加之后,就是标签改变了,所以new也会变成
页: [1]
查看完整版本: 高手帮忙看一下这个列表拷贝问题