为什么 python 列表占用这么多内存?

Why do python lists take up so much memory?

我有一个 pandas dataframe 每行包含大量文本,转换为 .pkl 时它占用 1.6GB 的 space。现在我想从这个数据框中列出一个单词列表,我认为像 [word for text in df.text for word in i.split()] 这样简单的东西就足够了,但是,这个表达式在 10 秒内吃掉了所有 16GB 的内存,仅此而已。我真的很感兴趣它是如何工作的,为什么它不超过 1.6GB?我知道列表会分配更多的内存以便能够扩展,所以我尝试了元组 - 结果相同。我什至尝试将所有内容作为元组 ('one', 'two', 'three') 写入文件,然后打开文件并执行 eval - 结果仍然相同。为什么会这样? pandas 压缩数据还是 python 效率低下?什么是更好的方法?

您可以使用发电机。例如map(func, iterable)