我有中等数量的基础对象。
这些基础对象将被放入集合中,这些集合将被处理:排序、截断等。
不幸的是,n 足够大,内存消耗有点令人担忧,速度也越来越令人担忧。
我的理解是元组的内存效率稍微高一些,因为它们是重复数据删除的。
无论如何,我想知道 Python 2.6/2.7 中列表与元组的 cpu/内存权衡是什么。
最佳答案
如果您有一个元组和一个包含相同元素的列表,则元组占用的空间更少。由于元组是不可变的,因此您无法对它们进行排序、添加,等等。我建议观看 this talk by Alex Gaynor快速介绍何时选择 Python 中的数据结构。
更新:再考虑一下,您可能需要研究优化对象的空间使用,例如,通过 __slots__
或使用 namedtuple
实例作为代理而不是实际对象。这可能会带来更大的节省,因为您有 N 个,并且(大概)只有几个它们出现的集合。 namedtuple
特别棒;查看Raymond Hettinger's talk .
关于Python 效率 : lists vs. 元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6063494/