Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
被Python集初始化搞糊涂了_Python - Fatal编程技术网

被Python集初始化搞糊涂了

被Python集初始化搞糊涂了,python,Python,有时会看到下面这样的代码,并做了一些调试,但仍然感到困惑。想知道它是否初始化为set()的列表?集合()的列表,集合中的每个元素也是列表?发布我在PyCharm中看到的内容,并感谢任何能够帮助解释语法含义以及如何阅读这行代码的人 table = [set() for i in range(10)] 问候,, Lin这只是PyCharm表示空集合的方式。标准Python解释器将改为使用set(),因为这是您在解释器中输入以创建空set的内容,并且一致性非常有用。从技术上讲,set([])向se

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

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'