【发布时间】:2017-03-11 23:15:11
【问题描述】:
我有一个列表my_list(该列表包含utf8字符串):
>>> len(my_list)
8777
>>> getsizeof(my_list) # <-- note the size
77848
由于某种原因,排序列表 (my_sorted_list = sorted(my_list)) 使用更多内存:
>>> len(my_sorted_list)
8777
>>> getsizeof(my_sorted_list) # <-- note the size
79104
为什么sorted 返回的列表比初始未排序列表占用更多内存空间?
【问题讨论】:
-
正如@Jim's answer 指出的那样,
sorted创建了新列表,您可以使用 my recent question(list() uses more memory than list comprehension) 关注故事,它会给您一些 Python 见解。 -
@vishes_shell 或者stackoverflow.com/questions/7247298/size-of-list-in-memory(2011 年问)
-
我真的很喜欢您对@vishes_shell 问题的回答中的图表 :-)。我在这类问题和答案中看到的唯一问题是它们可能突然在某个时候变得过时,因为我们正在处理一个实现细节:(
-
@JimFasarakis-Hilliard 是的,虽然这个特定的实现细节在从 python2 到 python3 的迁移中幸存下来。
-
@jcuenod 真的,真的。不过看看
dict,它的实现在it got a pretty big change in3.6之前一直存在;-)。
标签: python list python-3.x sorting python-internals