使用for x in obj
表示法时,迭代冻结集使用的内存少于集合吗?或者,当使用与集合相对的冻结集时,是否存在内存优势?
答案 0 :(得分:2)
我怀疑使用frozenset
而不是set
可以节省大量内存(如果有的话)。使用frozenset
的原因是它是可清除的,因此您可以将其用作字典键(或另一组的元素)。
答案 1 :(得分:2)
查看python2.7 source,空的冻结集是单例,从现有的冻结集中生成冻结集只会返回旧的引用。否则,似乎没有任何重要的内存优势,因为frozenset_new
和set_new
通常最终使用相同的参数调用make_new_set
。< / p>
使用冻结集而不是常规集的原因是为了获得不变性的好处 - 例如使用实例因为它是可散列的,或者因为它是一个常量。