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