我试图理解python中的可变/不可变对象。在下面的示例中,我希望为所有id(**)获得相同的对象id,但清单4不是。我如何解释只有#列表4给出不同对象id的原因? 多谢各位
# list 1
la = [1,2,3]
print('la=', la, ', id(la)= ',id(la))
# list 2
la[0]=9
print('la=', la, ', id(la)= ',id(la))
# list 3
lb=la
print('lb=', lb, ', id(lb)= ',id(lb))
# list 4
lc=la[:]
print('lc=', lc, ', id(lc)= ',id(lc))
la= [1, 2, 3] , id(la)= 2678849549576
la= [9, 2, 3] , id(la)= 2678849549576
lb= [9, 2, 3] , id(lb)= 2678849549576
lc= [9, 2, 3] , id(lc)= 2678844118664
[:]
语法是^{可以这样想:一个切片需要是一个不同的对象,一个原始对象的副本:
la[:]
是一个切片,尽管在这种形式中,它是一个返回整个列表的切片但是,切片与元组的工作方式相同,元组是不可变的类型:
等等
与列表不同的是,您不能执行
ta[0] = 5
。这使得元组是不可变的,列表是可变的分配给
la
或ta
不会改变任何对象,这些只是对象的名称(别名):第二个赋值没有更改列表,它更改了名称
ta
以引用整数4
。列表[1,2,3]
,如果没有其他引用,将被垃圾收集并销毁相关问题 更多 >
编程相关推荐