據我所知,動態陣列(Python 中的串列)在其大小達到其容量時會在記憶體中移動。據我所知,一個物件的 id 對應于它的記憶體地址。
但是當多次將值附加到串列時,它的 id 不會改變(所以它會留在記憶體中的同一個位置)。
為什么?
a = []
print(id(a)) # 2539296050560
for i in range(1_000_000):
a.append(i)
print(id(a)) # 2539296050560
uj5u.com熱心網友回復:
您正在混淆串列的地址(CPython 中的id是什么)和資料的地址。在底層和 CPython 中,串列是一個物件,其中包含指向其資料開頭的指標。因此,當您擴展串列時,資料將在記憶體中移動,但串列物件不會,從而允許它保留一個固定 id - 這是每種語言所必需的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/439277.html
