没有操作list1,为什么list1的值会扩展?
请教各位,下面代码,已经把list1赋给了temp,也在temp的基础上进行的extend,而且并没有操作list1,为什么list1的值也被扩展了?list1 =
list2 =
temp = list1
temp.extend(list2)
list3 = temp
结果
list1 =
list2 =
temp =
list3 = 因为 temp 和 list1 指向的是同一个内存地址,改成这样就不会了:
temp = list1[:] 一个账号 发表于 2020-3-22 10:14
因为 temp 和 list1 指向的是同一个内存地址,改成这样就不会了:
谢谢你的解答,确实可行。另一个问题是:关于list1[:]我可不可以理解为把list1复制了一遍,再把这个复制的值赋值给temp,这样原有的list1就不会被改变了呢? vvv3449860 发表于 2020-3-22 10:34
谢谢你的解答,确实可行。另一个问题是:关于list1[:]我可不可以理解为把list1复制了一遍,再把这个复制 ...
是的,你要是没有[:]就把地址也复制过去了,这样他俩基本就是"一个"了。 qiuyouzhi 发表于 2020-3-22 10:45
是的,你要是没有[:]就把地址也复制过去了,这样他俩基本就是"一个"了。
懂了,阿里嘎多{:5_109:} vvv3449860 发表于 2020-3-22 10:48
懂了,阿里嘎多
那就设个最佳答案吧~ temp = list1[:] 并不是深拷贝 建议上网搜搜 深拷贝和浅拷贝。 这个方法属于浅拷贝
比如list1 = ]
temp = list1[:]
temp = 1000
temp=22
那么list1变成 ] vvv3449860 发表于 2020-3-22 10:48
懂了,阿里嘎多
那就设为最佳答案吧~ 请见:https://fishc.com.cn/thread-159176-1-1.html
页:
[1]