空集文字?

时间:2011-05-25 20:18:56

标签: python set literals

[] =空list

() =空tuple

{} =空dict

set是否有相似的表示法? 或者我必须写set()

7 个答案:

答案 0 :(得分:424)

不,空集没有文字语法。你必须写set()

答案 1 :(得分:40)

只是为了扩展接受的答案:

从版本2.73.1,python以set的形式获得{}文字{1,2,3},但{}本身仍然用于空单。

Python 2.7(第一行在Python< 2.7中无效)

>>> {1,2,3}.__class__
<type 'set'>
>>> {}.__class__
<type 'dict'>

Python 3.x

>>> {1,4,5}.__class__
<class 'set'>
>>> {}.__class__
<type 'dict'>

更多信息:https://docs.python.org/3/whatsnew/2.7.html#other-language-changes

答案 2 :(得分:31)

无论如何,请使用 set()创建一个空集。

但是,如果你想给人留下深刻印象,请告诉他们你可以使用文字和*使用Python&gt; = 3.5(see PEP 448)创建一个空集:

>>> s = {*()}  # or {*{}} or {*[]}
>>> print(s)
set()

这基本上是一种更加简洁的{_ for _ in ()}方式,但是,不要这样做。

答案 3 :(得分:4)

这取决于您是希望文字进行比较还是分配。

如果要将现有设置设为空,则可以使用.clear() metod,尤其是在您想要避免创建新对象时。如果要进行比较,请使用set()或检查长度是否为0。

示例:

#create a new set    
a=set([1,2,3,'foo','bar'])
#or, using a literal:
a={1,2,3,'foo','bar'}

#create an empty set
a=set()
#or, use the clear method
a.clear()

#comparison to a new blank set
if a==set():
    #do something

#length-checking comparison
if len(a)==0:
    #do something

答案 4 :(得分:2)

添加疯狂的想法:使用Python 3接受unicode标识符,你可以声明一个变量ϕ = frozenset()(φ是U + 03D5)并改为使用它。

答案 5 :(得分:1)

是的。适用于非空dict / set的相同表示法适用于空dict / set。

请注意非空dictset文字之间的区别:

{1: 'a', 2: 'b', 3: 'c'}-内部的许多键值对组成了dict
{'aaa', 'bbb', 'ccc'}-内部值的元组使set

所以:

{} ==零个键值对==空dict
{*()} ==空的元组==空的set

事实上,您可以做到,并不意味着您应该这样做。除非您有很强的理由,否则最好显式构造一个空集,例如:

a = set()

NB :正如在评论中注意到的那样,{()} 不是一个空集合。这是一个有1个元素的集合:空元组。

答案 6 :(得分:-2)

有几种方法可以在Python中创建空Set:

  1. 使用set()方法
    这是python中的内置方法,可在该变量中创建空集。
  2. 使用clear()方法(创造性的工程师技术LOL)
    请参见以下示例:

    sets = {“嗨”,“如何”,“是”,“您”,“全部”}
    类型(套)(此行 输出:set)
    sets.clear()
    print(sets)(此行输出:{})
    类型(套)(此行 输出:set)

因此,这是创建空Set的2种方法。