在Python中使用大括号初始化集合

在Python中使用大括号初始化集合,python,python-2.7,set,Python,Python 2.7,Set,我正在学习python,我有一个关于初始化集合的新手问题。通过测试,我发现集合可以这样初始化: my_set = {'foo', 'bar', 'baz'} 与以下标准方式相比,这种方式是否有任何缺点: my_set = set(['foo', 'bar', 'baz']) 或者这只是一个风格问题?set-literal语法有两个明显的问题: my_set = {'foo', 'bar', 'baz'} 它在Python 2.7之前不可用 使用该语法无法表示空集(使用{}创建空dict)

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

my_set = {'foo', 'bar', 'baz'}
与以下标准方式相比,这种方式是否有任何缺点:

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

或者这只是一个风格问题?

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

my_set = {'foo', 'bar', 'baz'}
  • 它在Python 2.7之前不可用

  • 使用该语法无法表示空集(使用
    {}
    创建空dict)

  • 这些对你来说可能重要,也可能不重要

    概述此语法的文档部分是。

    From(python 2.7也适用于此):

    大括号或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'> 
    

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

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

    但是
    a
    b
    当然都是集合。

    您需要执行
    empty\u set=set()
    来初始化空集合
    {}
    是一个空的
    dict

    文档确实提到了它,只是没有提到。注意,这是一个不推荐使用的模块的文档,真正的集合现在是内置的。它在“Python2.7中的新功能”文档中,语言参考简要描述了它:@delnan我使用Python2.7,所以我不想查看Python3文档。我发布的链接是针对2.7的,但奇怪的是它没有提到这一点。我编辑了我的评论,2.7文档也提到了这一点。你发布的链接已经过时,是过去的遗物,是错误的,不推荐使用。忘记它的存在,用它自己告诉你要用的东西来代替它:并且@delnan感谢你帮助我。我编辑了这个问题,这样我就不再说没有相关的文档了(尽管网上很少有提到这个问题的例子)。对于过路人:Pycharm警告在可以使用文本时不要使用函数调用-可能有性能原因-所以在新代码中更喜欢使用set literal方式这就是为什么我喜欢提醒自己set构造函数为
    set([])
    ,而不仅仅是
    set()
    set()
    始终使用单个参数。单个iterable。@GeorgeKetterborough使用单个或无参数,后者创建一个空集。
    >>> a = set('aardvark')
    >>> a
    {'d', 'v', 'a', 'r', 'k'} 
    >>> b = {'aardvark'}
    >>> b
    {'aardvark'}