在Python中,当从列表中创建一个frozenset时,例如:
a=[1,2,3]
b=frozenset(a)
按预期迭代“a”中的项目会迭代 3 个项目,但迭代“b”中的项目也会迭代相同的 3 个项目。我预计“b”仅包含 1 个项目,即列表“a”。为什么会出现这种情况?
最佳答案
frozenset
将可迭代对象作为参数,并构造一个包含可迭代对象元素的集合。如果你想要一个包含列表本身的集合,那么你就不走运了:列表是可变的,不可散列,因此不能是集合的元素,无论是卡住还是其他。
您可以做的是,首先创建一个包含列表元素的元组,然后创建一个包含该元组的卡住集。请注意,原始列表的元素递归地也必须是可散列的。
>>> frozenset(a)
frozenset([1, 2, 3])
>>> frozenset((tuple(a),))
frozenset([(1, 2, 3)])
关于python - 为什么在 python 中从列表中创建一个 freezeset 会转换列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813114/