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