使用花括号在Python中初始化Set

时间:2013-06-28 20:31:24

标签: python python-2.7 set

我正在学习python,我有一个关于初始化集的新手问题。通过测试,我发现可以像这样初始化一个集合:

my_set = {'foo', 'bar', 'baz'}

与标准方式相反,这样做有什么不利之处:

my_set = set(['foo', 'bar', 'baz'])

还是只是风格问题?

4 个答案:

答案 0 :(得分:81)

set literal语法有两个明显的问题:

my_set = {'foo', 'bar', 'baz'}
  1. 在Python 2.7

  2. 之前不可用
  3. 使用该语法无法表达空集(使用{}创建空字典)

  4. 那些对您来说可能重要,也可能不重要。

    概述此语法的文档部分为here

答案 1 :(得分:36)

使用单个单词参数比较{}set()之间的差异。

>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'} 
>>> b = {'aardvark'}
>>> b
{'aardvark'}

ab都是固定的。

答案 2 :(得分:24)

来自Python 3 documentation同样适用于python 2.7 ):

  

可以使用curly大括号或set()函数来创建集合。注意:   要创建一个空集,你必须使用set(),而不是{};后者   创建一个空字典,一个我们在中讨论的数据结构   下一节。

在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', '{', '}'])

答案 3 :(得分:3)

您需要执行Expected to be running in 'ProxyZone', but it was not found. at Function.Object.<anonymous>.ProxyZoneSpec.assertPresent (../../node_modules/zone.js/dist/proxy.js:42:19) at runInTestZone (../../node_modules/zone.js/dist/async-test.js:202:23) at Object.<anonymous> (../../node_modules/zone.js/dist/async-test.js:168:17) 来初始化一个空集。 empty_set = set()是空的{}