一开始以为是A,但是自己在电脑敲了一遍果然是C,有人帮忙解释一下吗。
list1=[4,5,6]
list2=list1 #浅复制操作,将list1内容复制给list2
list2=[4,5,6]
在 python 中赋值语句总是建立对象的引用值,而不是复制对象。因此,python 变量更像是指针,总是指向。
如果理解了这句话那就好理解了。
list1[2]=3 修改了list1里的内容,list1为[4,5,3]
由于list都用的是同一块内容
所以list2也为[4,5,3]。
是这样的你看首先list2=list1,这里是将list1这个列表给了list2,所以现在list2=[4,5,6],然后,这里会涉及到一个指针,学过c语言可以很好理解
list2=list1这里list2指向了list1,list1的某个元素变化的时候,那么list2在该处的值也就跟着变了。
id(ojb)相同说明指向同一内存空间
>>> list1=[4,5,6]
>>> list2=list1
>>> id(list1)
49988864
>>> id(list2)
49988864
>>> list1[2]=3
>>> id(list1)
49988864
>>> id(list2)
49988864
>>> list3=list1[:]
>>> list3
[4, 5, 3]
>>> id(list3)
50426368
>>> id(list1)
49988864
>>> list1[2]=0
>>> list1
[4, 5, 0]
>>> list3
[4, 5, 3]