python 第十一课 关于列表复制的问题
这两种都是一样的赋值,为什么结果不一样?一个 new 跟着old 变化,一个保持不变?不是应该跟着变化才对吗?第一种
>>> old =
>>> new = old
>>> new1 = old [ : ]
>>> old.append(7)
>>> print(old,new,new1)
第二种
>>> old =
>>> new = old
>>> old =
>>> old
>>> new
>>> print(old,new)
如果将原列表被直接赋值,那么与它关联的切片其实是不会变化的 python中变量名只是标签而已,可以多个标签指向同一块内存
new=old
意味着new和old这两个标签指向了同一块内存
所以你对new和old指向的数据进行改动,比如列表的pop,sort,reverse等操作都会对两者同时产生作用,因为他们修改了内存中的数据
而你将old重新赋值,意味着old标签指向另外一块内存,从此old和new再无瓜葛 >>> old = 这个列表贴上俩old的标签
>>> new = old 这个列表又贴上了 new的标签
>>> new1 = old [ : ] 定义了一个新的列表并贴上了new1的标签
>>> old.append(7) old这个列表末尾增加元素7 (这个列表还有new这个标签)
>>> print(old,new,new1)
第二种
>>> old = 这个列表贴上了old这个标签
>>> new = old 这个列表又贴上了 new的标签
>>> old = old这个标签被贴到另一个列表上
>>> old
>>> new
>>> print(old,new)
这样应该比较详细了 第一种:
<--- 此列表的标签为old和new,执行old.append(7)后列表变为 -->,扩展后的列表的标签仍然为old和new
第二种
<--- 此列表的标签为old和new,执行old = 后,old变为了列表的标签,而new仍然为列表的标签 EveLee 发表于 2020-4-11 09:30
第一种:
,扩展后的列表的标签仍然为old和new
感谢感谢,已经懂了{:5_91:} EveLee 发表于 2020-4-11 09:30
第一种:
,扩展后的列表的标签仍然为old和new
感谢感谢,已经懂了{:7_113:} EveLee 发表于 2020-4-11 09:30
第一种:
,扩展后的列表的标签仍然为old和new
感谢感谢,已经懂了{:9_227:} 老八秘制 发表于 2020-4-11 08:35
如果将原列表被直接赋值,那么与它关联的切片其实是不会变化的
感谢感谢,已经懂了{:10_298:} 蛋小蛋 发表于 2020-4-11 10:33
感谢感谢,已经懂了
跪求最佳
页:
[1]