理解Python集合的行为

2024-03-23

内置类型的文档set says:

class set([iterable])

返回一个新的 set 或 freezeset 对象 其元素取自 可迭代的。集合的元素必须 可散列。

没关系,但是为什么会这样:

>>> l = range(10)
>>> s = set(l)
>>> s
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

而这并没有:

 >>> s.add([10])

    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        s.add([10])
    TypeError: unhashable type: 'list'

两者都是列表。是一些magic初始化期间发生?


当你初始化一个集合时,你提供了一个值的列表,这些值必须each可散列。

s = set()
s.add([10])

是相同的

s = set([[10]])

这会引发与您现在看到的相同的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解Python集合的行为 的相关文章

随机推荐