gpt4 book ai didi

python - 为什么在 python 中从列表中创建一个 freezeset 会转换列表?

转载 作者:行者123 更新时间:2023-12-01 02:31:09 24 4
gpt4 key购买 nike

在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com