使用大括号初始化设置
我正在学习python,我有一个关于初始化集合的新手问题。 通过testing,我发现一个集合可以像这样初始化:
my_set = {'foo', 'bar', 'baz'}
这样做有什么缺点,而不是以下的标准方式:
my_set = set(['foo', 'bar', 'baz'])
还是只是一个风格的问题?
设置字面语法有两个明显的问题:
my_set = {'foo', 'bar', 'baz'}
-
它在Python 2.7之前是不可用的
-
没有办法使用该语法表示空集(使用
{}
创build一个空字典)
这些对你来说可能是重要的,也可能不重要。
概述这种语法的文档部分在这里 。
用单个单词参数比较{}
和set()
之间的区别。
>>> a = set('aardvark') >>> a {'d', 'v', 'a', 'r', 'k'} >>> b = {'aardvark'} >>> b {'aardvark'}
但是a
和b
都是套。
从Python 3文档 ( Python 2.7相同 ):
大括号或set()函数可以用来创build集合。 注意:要创build一个空集,必须使用set(),而不是{}; 后者创build一个空字典,我们将在下一节讨论一个数据结构。
在python 2.7中:
>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'} >>> my_set set(['bar', 'foo', 'baz'])
请注意{}
也被用于map
/ dict
:
>>> m = {'a':2,3:'d'} >>> m[3] 'd' >>> m={} >>> type(m) <type 'dict'>
人们可以使用集合理解:
>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' } >>> a set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])