字面意思是空的?

[] = 空的 list

() = 空的 tuple

{} = 空的 dict

set有类似的表示法吗? 还是要我写 set()

251394 次浏览

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

这取决于你是想用文字进行比较,还是赋值。

如果您想让一个现有的集合为空,您可以使用.clear()方法,特别是如果您想避免创建一个新对象。如果您想进行比较,请使用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

只是扩展一下公认的答案:

从版本2.73.1中,python已经以{1,2,3}的形式获得了set的字面量{},但{}本身仍然用于空字典。

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

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

Python 3. x

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

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

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

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

但是,如果你想给人们留下深刻的印象,告诉他们你可以用Python >= 3.5 (参见PEP 448)创建一个空集:

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

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

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

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

{1: 'a', 2: 'b', 3: 'c'}——里面的一些键值对使得dict
{'aaa', 'bbb', 'ccc'}—其中的元组值使set

所以:

{} == 0个键值对== empty dict
{*()} ==空值元组==空set

然而,你能做的事实并不意味着你应该做。除非你有一些强有力的理由,否则最好显式地构造一个空集,比如:

a = set()

性能:

文字~快15%而不是# eyz2构造函数(CPython-3.8, 2019 PC,英特尔(R)酷睿(TM) i7-8550U CPU @ 1.80GHz):

>>> %timeit ({*()} & {*()}) | {*()}
214 ns ± 1.26 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)


>>> %timeit (set() & set()) | set()
252 ns ± 0.566 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

... 为了完整起见,上面表达式中的雷纳托加西亚的 # EYZ0提议是一些快60%!

>>> ϕ = frozenset()


>>> %timeit (ϕ & ϕ) | ϕ
100 ns ± 0.51 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

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

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

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

    集={“嗨”、“如何”、“是”,“你”,“所有”}< br > 类型(集),(这条线 输出:set)
    sets.clear () < br > (This Line Output: {})
    . print(sets)  (This Line Output: {} 类型(集),(这条线 输出:set)

这是创建空集合的两种方法。