指的是eggs指向的列表内存地址
第一例中先是指向了[1,2,3],然后通过覆盖,指向了[4,5,6],列表内存地址改变了
>>> eggs = [1,2,3]
>>> id(eggs)
2062974733696
>>>
>>> eggs = [4,5,6]
>>> id(eggs)
2062974910208
第二例中是在[1,2,3]的内存位置“就地”改变了列表内容,所以内存地址没变
>>> eggs = [1,2,3]
>>> id(eggs)
2062974915200
>>>
>>> del eggs[2]
>>> del eggs[1]
>>> del eggs[0]
>>> eggs.append(4)
>>> eggs.append(5)
>>> eggs.append(6)
>>> eggs
[4, 5, 6]
>>> id(eggs)
2062974915200
“列表值”指的是列表本身,而不是指列表中的值。
举例说明:
eggs =[1,2,3] 此eggs的在计算机存储的id是1000。
方法1:采用del eggs[i] 和 eggs.append(i)的方式只是修改了eggs作为列表中,列表存储的值,
而在计算机中eggs的id依然是1000。
方法2:若采用eggs=[4,5,6]重新赋值的方式,会改变,eggs在计算机存储的id,此时eggs的id可能是2000。
所以说方法1,不会修改eggs的列表值,此处的列表值指的是在计算机中存储地址id。
勿忘评价,等积分,谢
这本书写的不咋滴!别计较这个列表值了。
这有点像双缓存绘图的过程,4,5,6替换1,2,3,是整体替换,列表的大小并没有改变;而del,append是在不断改变列表的大小,在这个过程中,其实列表不断在进行改变,只是外部看不出来罢了