内存差异迭代冻结集与集合

时间:2014-10-03 18:55:29

标签: python

使用for x in obj表示法时,迭代冻结集使用的内存少于集合吗?或者,当使用与集合相对的冻结集时,是否存在内存优势?

2 个答案:

答案 0 :(得分:2)

我怀疑使用frozenset而不是set可以节省大量内存(如果有的话)。使用frozenset的原因是它是可清除的,因此您可以将其用作字典键(或另一组的元素)。

答案 1 :(得分:2)

查看python2.7 source,空的冻结集是单例,从现有的冻结集中生成冻结集只会返回旧的引用。否则,似乎没有任何重要的内存优势,因为frozenset_newset_new通常最终使用相同的参数调用make_new_set。< / p>

使用冻结集而不是常规集的原因是为了获得不变性的好处 - 例如使用实例因为它是可散列的,或者因为它是一个常量。