在python中,从列表中创建冻结集时,例如:
a=[1,2,3]
b=frozenset(a)
迭代“a”中的项目按预期迭代3个项目,但迭代“b”中的项目也会迭代相同的3个项目。我希望'b'只包含1个项目,列表'a'。为什么会这样?
答案 0 :(得分:2)
frozenset
将iterable作为参数,并构造一个包含iterable元素的集合。如果你想要一个包含 list 本身的集合,那你就不走运了:一个可变的列表,不可清除,因此不能成为集合的元素,冻结或其他。
你可以做什么,首先创建一个包含列表元素的元组,然后创建一个包含 元组的冻结集。请注意,递归地,原始列表的元素也必须是可清除的。
>>> frozenset(a)
frozenset([1, 2, 3])
>>> frozenset((tuple(a),))
frozenset([(1, 2, 3)])