本文主要探讨一下在 Python 各种创建 list, set, tuple 和 dictionary 的方式。首先看
最常用的创建方式
1 2 3 4 |
alist = [1, 2] # type(alist) <class 'list'> aset = {1, 2} # type(aset) <class 'set'> atuple = (1, 2) # type(atuple) <class 'tuple'> adict = {'k1': 1, 'k2': 2} # type(adict) <class 'dict'> |
以上相当于是针对右边的值调用了相应的构造函数,如 list([1, 2]), set({1, 2}), tupe((1, 2)), dict({'k1': 1, 'k2': 2})
创建 set 和 dictionary 都是用大括号 {}
, 对于 tuple 如果是单个元素时,要附加一个逗号
1 |
atuple = (1,) |
如果省略逗号,会怎样呢?
>>> a = (1,)
>>> type(a)
<class 'tuple'>
>>> b = (1) # 没了逗号,括号也能省略,就是 b = 1
>>> type(b)
<class 'int'>
创建一个 tuple 也可以省略括号,逗号还是要的,像
1 |
atuple = 1, |
>> a = 1,
>>> type(a)
<class 'tuple'>
这还是从代码中吸取的教训,在一系列赋值中不小心多加了逗号
1 2 3 4 |
component['id'] = 123 component['name'] = 'hello', component['version'] = '1.0', component['show'] = True |
本来是像 Python 的 dict 那样赋值,结果因为第二,三行多加了逗号,使得 component['name'] 和 component['version'] 的类型变成了 tuple。
空集合的创建方式
如果只想创建一个空的 list, set, tuple 和 dictionary, 而后才往其中放入元素
1 2 3 4 |
alist = [] # alist.append(1) aset = set() # aset.add(1), 不能用 aset = {} 了,与 dic 重叠 atuple = () # tuple 是 immutable, 创建空 tuple 不知有何意义 adict = {} # adict['key1'] = 1 |
需留意的是创建空 set 必须显示的用 set() 构造函数了,不能用大括号的方式,否则就变成了一个空 dictionary
由于 set 不能用 {}
, 像是作为一个补偿,我们还有两种较为花翘的,间接使用 {}
创建空 set 的方式
1 2 |
set1 = {*[]} # type(set1) <class 'set'>, set1.add(1) set2 = {*()} # type(set2) <class 'set'>, set2.add(2) |
构造函数创建空集合
除了前面使用 []
, ()
, {}
类似于语法糖的方式外,再来了解下显式的使用构造函数的创建方式
1 2 3 4 |
alist = list() aset = set() # 这个前面说过 tuple1 = tuple() adict = dict() |
构造函数创建带元素的集合
显示使用构造函数也能创建带元素的各种集合
1 2 3 4 5 6 7 |
list1 = list([1, 2]) # 参数为 iterable, 所以还可以下两种方式 list2 = list((1, 2)) list3 = list({1, 2} set1 = set([1, 2]) # 同理, set((1, 2)), set({1, 2}) tuple1 = tuple([1, 2]) # 同理, tuple((1, 2)), tuple({1, 2}) adict = dict({'key1': 1, 'key2': 2}) |
不过,显然用构造函数创建带元素的集合的以上各种方式都显得十分多余。
也有例外,通过两个列表来生成 dict 的方式或许常会用到
1 2 3 |
keys = ['key1', 'key2'] values = [1, 2] adict = dict(zip(keys, values)) |
本文链接 https://yanbin.blog/create-python-list-set-dict/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
[…] 之前了解过创建各种类型集合的方式 创建 Python 的 list, set, tuple 和 dict,这里再次回顾一下 […]