【发布时间】:2019-11-07 15:46:57
【问题描述】:
我以两种不同的方式使用相同的元素创建了两个单独的列表 a 和 b。为什么两个列表的大小有差异?
import sys
a = [0]
print(a)
>>> [0]
print(sys.getsizeof(a))
>>> 72
b = [i for i in range(1)]
print(b)
>>> [0]
print(sys.getsizeof(b))
>>> 96
【问题讨论】:
-
您遇到了过度分配的问题。 Related
-
也相关:stackoverflow.com/questions/51526242/… 我什至认为那是重复的。但是 TL:DR 列表文字将 udnerlying 缓冲区分配到保存该列表所需的确切长度,而 list-comphrenesion 本质上是使用
.append进行 for 循环,这将使用过度分配。 -
感谢@juanpa.arrivillaga 如此标记!
-
另一个真正进入内部的相关问题:stackoverflow.com/questions/40018398/…
标签: python object memory memory-management sizeof