python的两个列表对象没有充当usu

2024-03-28 10:29:27 发布

您现在位置:Python中文网/ 问答频道 /正文

l=[1,2,3];
l2=l
l.append(4)

当l附加4时,l2也将有4,因为它们共享内存。 但如何解释下面的代码:

l=[1,2,3]
l2=l
l=[]
l.append(4)

这一次l2将不再有与l相同的变化。 这与计算机内存的深层理论有关


Tags: 内存代码计算机理论深层共享内存appendl2
1条回答
网友
1楼 · 发布于 2024-03-28 10:29:27

查看Ned Batcheleder的精彩解释-Facts and myths about Python names and values

长话短说,最初list1和list2指的是同一个对象。列表是可变的,所以当您附加到对象时,它仍然是由两个不同名称引用的同一个对象。将空列表赋给list1后,它引用不同的对象,而list2仍然引用原始列表

>>> list1 = [1, 2, 3]
>>> list2 = list1
>>> id(list1)
140533230706312
>>> id(list2)
140533230706312
>>> list1.append(4)
>>> list1
[1, 2, 3, 4]
>>> list2
[1, 2, 3, 4]
>>> id(list1)
140533230706312
>>> id(list2)
140533230706312
>>> list1 = []
>>> id(list1)
140533231045704
>>> id(list2)
140533230706312
>>> list2
[1, 2, 3, 4]

相关问题 更多 >