2024-03-28 10:29:27 发布
网友
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相同的变化。 这与计算机内存的深层理论有关
查看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]
查看Ned Batcheleder的精彩解释-Facts and myths about Python names and values
长话短说,最初list1和list2指的是同一个对象。列表是可变的,所以当您附加到对象时,它仍然是由两个不同名称引用的同一个对象。将空列表赋给list1后,它引用不同的对象,而list2仍然引用原始列表
相关问题 更多 >
编程相关推荐