被Python集初始化搞糊涂了
有时会看到下面这样的代码,并做了一些调试,但仍然感到困惑。想知道它是否初始化为set()的列表?集合()的列表,集合中的每个元素也是列表?发布我在PyCharm中看到的内容,并感谢任何能够帮助解释语法含义以及如何阅读这行代码的人被Python集初始化搞糊涂了,python,Python,有时会看到下面这样的代码,并做了一些调试,但仍然感到困惑。想知道它是否初始化为set()的列表?集合()的列表,集合中的每个元素也是列表?发布我在PyCharm中看到的内容,并感谢任何能够帮助解释语法含义以及如何阅读这行代码的人 table = [set() for i in range(10)] 问候,, Lin这只是PyCharm表示空集合的方式。标准Python解释器将改为使用set(),因为这是您在解释器中输入以创建空set的内容,并且一致性非常有用。从技术上讲,set([])向se
table = [set() for i in range(10)]
问候,,
Lin这只是PyCharm表示空
集合的方式。标准Python解释器将改为使用set()
,因为这是您在解释器中输入以创建空set
的内容,并且一致性非常有用。从技术上讲,set([])
向set
内置函数发送一个空的列表
,这将生成一个空的set
对象,但只需set()
即可得到相同的结果。我不知道为什么PyCharm的开发人员决定用不同的方式表示一个空集
在标准Python解释器中:
>>> set()
set()
>>> set([])
set()
set([])
无法表示包含空列表的set
,因为list
不是可散列类型(如图所示,它将用{[]}
表示):
>>>{[]}
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:不可损坏的类型:“列表”
如果你想知道这种非标准表示背后的原因,你必须询问PyCharm的开发人员。这是一个空集合的列表。我不知道PyCharm在干什么,但table
只是一个包含十个空集合的列表,这表示集合为空。在Python shell中尝试set()
。我尝试了,它只返回空set
的repr()
:set()P
>>> {[]}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'