被Python集初始化搞糊涂了

2024-04-24 17:11:45 发布

您现在位置:Python中文网/ 问答频道 /正文

有时看到下面这样的代码,并做了一些调试,但仍然困惑。想知道它是否初始化为set()的列表?set()的列表,并且集合中的每个元素也是一个列表?把我在PyCharm中看到的东西贴出来,并感谢任何人能够帮助解释语法的含义,以及如何阅读这行代码。你知道吗

table = [set() for i in range(10)]

enter image description here

谨致问候, 林


Tags: 代码in元素列表fortable语法range
1条回答
网友
1楼 · 发布于 2024-04-24 17:11:45

这只是PyCharm表示空set的方式。标准Python解释器将改为使用set(),因为这是您将输入解释器来创建空set的内容,并且一致性很有帮助。从技术上讲,set([])将一个空的list发送给set内置函数,这将产生一个空的set对象,但是您只需set()就可以得到相同的结果。我不知道为什么PyCharm的开发人员决定用另一种方式表示一个空集。你知道吗

在标准Python解释器中:

>>> set()
set()
>>> set([])
set()

set([])无法表示包含空的listset,因为list不是可哈希类型(如图所示,它将用{[]}表示):

>>> {[]}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

如果您想知道这种非标准表示背后的原因,您必须询问PyCharm的开发人员。你知道吗

相关问题 更多 >