【发布时间】:2018-03-24 02:58:46
【问题描述】:
假设我以两种方式创建 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 内存管理内部会发生什么?为什么“相同”的列表有不同的大小?
【问题讨论】:
-
我猜是因为当您将列表创建为文字时,Python 会分配所需的特定大小,而当您附加到它时,它会扩展超出所需的范围,前提是您不会只附加一次.
标签: python python-2.7 list python-internals