空集文字?

孤者浪人 提交于 2020-02-28 05:07:24

[] =空list

() =空tuple

{} =空dict

set是否有类似的符号? 还是我必须写set()


#1楼

这取决于您是否要使用文字进行比较或赋值。

如果要使现有集合为空,则可以使用.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楼

只是为了扩展公认的答案:

2.7版和3.1版开始,python已以用法{1,2,3}形式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


#3楼

更加疯狂的想法:在Python 3接受unicode标识符的情况下,您可以声明一个变量ϕ = frozenset() (ϕ为U + 03D5),然后改用它。


#4楼

一定要使用 set()创建一个空集。

但是,如果您想打动别人,请告诉他们您可以使用文字和*通过Python> = 3.5( 请参阅PEP 448 )创建一个空集,方法是:

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

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


#5楼

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

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

{1: 'a', 2: 'b', 3: 'c'} -数字键-值对内部使一个dict
{'aaa', 'bbb', 'ccc'} -内部的值元组组成一个set

所以:

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

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

a = set()

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!