定义

元组(tuple):
  不可变序列,一旦建立不能修改元组中的元素。

列表[list]:
  可变序列,可以添加和删除其中的元素。

集合{set}:
  集合是一个可变无序集合,没有重复元素。支持数学中的集合运算,如并集、交集、差集等。

字典{dict}:
  也是可变容器,使用键-值对(key:value)存储,key是唯一的,value不需要唯一。 (相当于其它语言中的Map)

空元组、空列表、空字典、空集合

>>> a=()
>>> b=[]
>>> c={}
>>> type(a)
<class 'tuple'>
>>> type(b)
<class 'list'>
>>> type(c)
<class 'dict'>
>>> len(a)
0
>>> len(b)
0
>>> len(c)
0
>>>

{}是空字典,哪空集合如何表达? 尝试:

>>> d={None}
>>> type(d)
<class 'set'>
>>> len(d)
1
>>>

明显d是非空集,通过查资料知道空集合只能用set()函数转换或者直接设置:

>>> d1=set(())
>>> d2=set([])
>>> d3=set({})
>>> d4=set()
>>> type(d1)
<class 'set'>
>>> type(d2)
<class 'set'>
>>> type(d3)
<class 'set'>
>>> type(d4)
<class 'set'>
>>> for i in range(1,5):eval(f'print(\'len(d{i}) =\',len(d{i}))')

len(d1) = 0
len(d2) = 0
len(d3) = 0
len(d4) = 0
>>>

单一元素的元组、列表、字典、集合

>>> a=(None)
>>> b=[None]
>>> c={None}
>>> d={None:None}
>>> type(a)
<class 'NoneType'>
>>> type(b)
<class 'list'>
>>> type(c)
<class 'set'>
>>> type(d)
<class 'dict'>
>>> 

只有元组不对,因为这样a=(None)表达,与数值运算的括号混起来了。 就像 (1), (2), ... 就是整数1,2,... 所以单个元素的元组要用一个逗号附在元素后来表示:

>>> a1=(None,)
>>> a2=(1,)
>>> a3=('2',)
>>> a4=(,)
SyntaxError: invalid syntax
>>> type(a1)
<class 'tuple'>
>>> type(a2)
<class 'tuple'>
>>> type(a3)
<class 'tuple'>
>>> len(a1)
1
>>> len(a2)
1
>>> len(a3)
1
>>> 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐