7
說我用兩種方法創建python lists
。
爲什麼具有相同數據的列表具有不同的大小?
在第一種情況下,我用簡單的賦值:
my_list = []
print(my_list, '->', my_list.__sizeof__())
my_list = [1]
print(my_list, '->', my_list.__sizeof__())
my_list = [1, 1]
print(my_list, '->', my_list.__sizeof__())
在第二種情況下,我用append()
方法的列表:
my_list = []
print(my_list, '->', my_list.__sizeof__())
my_list.append(1)
print(my_list, '->', my_list.__sizeof__())
my_list.append(1)
print(my_list, '->', my_list.__sizeof__())
但我得到意想不到的(對我來說)輸出:
=== WITH ASSIGNMENT ===
([], '->', 40)
([1], '->', 48)
([1, 1], '->', 56)
=== WITH APPEND ===
([], '->', 40)
([1], '->', 72)
([1, 1], '->', 72)
Python內存管理內部會發生什麼EMENT?爲什麼'相同'的名單有不同的大小?
我猜,因爲當你創建列表作爲一個文字時,Python會指定所需的特定大小,而當你附加到它時,它會擴展超過所需的數值,因爲假設你不會只追加一次。 – jonrsharpe
[內核的Python列表訪問和調整運行時大小](https://stackoverflow.com/questions/5932328/internals-of-python-list-access-and-resizing-runtimes) – anuragal