目录
3.1.1 使用 {} 创建集合对象,并使用 add() 添加元素
1. 元组
1.1 元组的创建
1.1.1 通过()创建
注:小括号可以省略。若元组只有一个元素,则必须后面加逗号,如 (1,)。
1.1.2 tuple()
tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。如:
a = tuple("abc") ==> a = ('a','b','c')
b = tuple(range(3)) ==> b = (0, 1, 2)
c = tuple([2,3,4]) ==> c = (2, 3, 4)
1.1.3 生成器推导式创建元组
生成器推导式生成的不是列表也不是元组,而是一个生成器对象,但可以转化成列表或者元组。
注:生成器对象的元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
>>> s = (x*2 for x in range(5))
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> list(s)
[]
1.1.4 zip()
zip(列表1,列表2,...) 将多个列表对应位置的元素组合成为元组,并返回这个zip 对象。
>>> a = [10,20,30]
>>> b = [40,50,60]
>>> c = [70,80,90]
>>> d = zip(a,b,c)
>>> tuple(d)
((10, 40, 70), (20, 50, 80), (30, 60, 90))
1.2 访问元组元素
1.2.1 通过 [] 访问
注:元组的元素不能修改。
元组的切片操作与列表类似,只不过返回的仍然是元组对象。
1.2.2 排序
只能使用内置函数 sorted(tupleObj) 对元组排序,并生成新的列表对象。
2. 字典
2.1 简介
1. 字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。
2. “键”是任意的不可变数据,如:整数、浮点数、字符串、元组。但列表、字典、集合等可变对象,不能作为“键”。
3. “键”不可重复。
4. “值”可以是任意的数据,并且可重复。
2.2 字典的创建
2.2.1 通过 {} 创建字典对象
如:a = {'name':'老白' , 'age':26 , 'job':'waiter'}
2.2.2 dict()
>>> b = dict(name='老白', age=26 , job='waiter')
>>> c = dict([("name","秀才"),("age",25)])
>>> c
{'name': '秀才', 'age': 25}
2.2.3 zip()
>>> k = ['name','age','job']
>>> v = ['大嘴',25,'cook']
>>> d = dict(zip(k,v))
>>> d
{'name': '大嘴', 'age': 25, 'job': 'cook'}
2.2.4 fromkeys 创建值为空的字典
>>> a = dict.fromkeys(['name','age','job'])
>>> a
{'name': None, 'age': None, 'job': None}
2.3 访问字典元素
2.3.1 通过 [键] 获得“值”
>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a['name']
'老白'
>>> a['gender']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'gender'
2.3.2 get()
优点:指定键不存在,返回None;指定键不存在时,可以设定默认返回的对象。
>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a.get('name')
'老白'
>>> a.get('gender','male')
'male'
2.3.3 items()
列出所有的键值对。
>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a.items()
dict_items([('name', '老白'), ('age', 26), ('job', 'waiter')])
2.3.4 keys()、values()
列出所有的键、值。
>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a.keys()
dict_keys(['name', 'age', 'job'])
>>> a.values()
dict_values(['老白', 26, 'waiter'])
2.3.5 in
检测一个“键”是否在字典中。
2.3 添加字典元素
2.3.1 新增“键值对”
如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。
>>>a = {'name':'老白','age':26,'job':'waiter'}
>>> a['address']='七侠镇'
>>> a['age']=26
>>> a
{'name': '老白', 'age': 26, 'job': 'waiter', 'address': '七侠镇'}
2.3.2 update()
将新字典中所有键值对全部添加到旧字典对象上,若key 已存在,则直接覆盖。
>>> a = {'name':'老白','age':26,'job':'waiter'}
>>> b = {'name':'秀才','salary':1000,'gender':'male'}
>>> a.update(b)
>>> a
{'name': '秀才', 'age': 26, 'job': 'waiter', 'salary': 1000, 'gender': 'male'}
2.4 删除字典元素
del:如 del a['name'] 或 del(a['name'])。
clear():删除所有键值对。
pop():删除指定键值对,并返回对应的“值对象”:如 b = a.pop('age') ==> b = 26。
popitem() ::随机删除和返回该键值对。字典是“无序可变序列”,popitem 弹出随机的项,若需一个接一个地移除并处理项,该方法非常有效。
2.5 序列解包
序列解包可用于元组、列表、字典,实现对多个变量赋值。
>>> x,y,z=(20,30,10)
>>> x
20
>>> y
30
>>> z
10
>>> (a,b,c)=(9,8,10)
>>> a
9
>>> [a,b,c]=[10,20,30]
>>> a
10
>>> b
20
注:序列解包用于字典时,默认是对“键”进行操作; 如果需要对键值对操作,则需要使用 items();如果需要对“值”进行操作,则需要使用 values();
>>> s = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> name,age,job=s #默认对键进行操作
>>> name
'name'
>>> name,age,job=s.items() #对键值对进行操作
>>> name
('name', '老白')
>>> name,age,job=s.values() #对值进行操作
>>> name
'老白'
3. 集合
集合无序可变,元素不能重复。集合底层由字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复且唯一的。
3.1 集合的创建和增删
3.1.1 使用 {} 创建集合对象,并使用 add() 添加元素
>>> a = {3,5,7}
>>> a
{3, 5, 7}
>>> a.add(9)
>>> a
{9, 3, 5, 7}
3.1.2 set()
将列表、元组等可迭代对象转成集合,若存在重复数据,则只保留一个。
>>> a = ['a','b','c','b']
>>> b = set(a)
>>> b
{'b', 'a', 'c'}
3.1.3 remove() clear()
remove()删除指定元素;clear()清空整个集合。
>>> a = {10,20,30,40,50}
>>> a.remove(20)
>>> a
{10, 50, 30}
3.2 集合相关操作
a = {1,3,'zzz'}
b = {'he','it',zzz'}
3.2.1 并集
a|b 或 a.union(b) ==> {1, 3, 'zzz, 'he', 'it'}
3.2.2 交集
a&b 或 a.intersection(b) ==> {'zzz'}
3.2.3 差集
a-b 或 a.difference(b) ==> {1, 3}