1 元组
my_tuple = (10.20, 30, 40)
my_tuple[2] = 80
print(my_tuple[2])
my_tuple[2] = 80
TypeError: 'tuple' object does not support item assignment
my_tuple = 10
print(my_tuple, type(my_tuple))
my_tuple = 10,
print(my_tuple, type(my_tuple))
10 <class 'int'>
(10,) <class 'tuple'>
my_tuple = (10, 20, 30, 40)
a, b, c, d = my_tuple
print('a_=', a)
print('b_=', b)
print('c_=', c)
print('d_=', d)
a_= 10
b_= 20
c_= 30
d_= 40
- 对元组解包时,变量的数量要和元组中元素的数量保持一致
- 假如变量和元素不一致,可在变量前加一个 *,来获取元祖中的剩余元素
my_tuple = (10, 20, 30, 40)
a, *b, c = my_tuple
print('a_=', a)
print('b_=', b)
print('c_=', c)
a_= 10
b_= [20, 30]
c_= 40
2 字典
- 字典是映射(mapping)数据结构
- 字典的作用与列表类似,为用来存储对象的容器
2.1 字典的特点
- 查询性能很好,但储存性能相对较差;列表正好相反
- 字典中每个元素都有唯一的名字,通过这个名字可以快速查询到指定的元素,这个唯一的名字,一般称为键 key,通过 key 可查询 value 值,因此,字典也称之为键值对(key-value)结构
- 每个字典可以有多个键值对,每个键值对我们可以称之为一项(item)
2.2 字典的使用
2.2.1 创建字典
- dict():
- 可用来创建字典
- 也可将一个包含有双值子序列转换为字典
- 双值序列:序列中有2个值,如:[1,3]、(‘a’,‘b’)、 ‘ab’
- 子序列:序列的某个元素也为序列,则称该元素为子序列,如:[(),()]、[[],[],{}]
d = dict([('name', '钢铁侠'), ('age', 35)])
print(d, type(d))
{'name': '钢铁侠', 'age': 35} <class 'dict'>
- get(key[,default]):
- 根据键来获取字典当中的值
- 如果字典当中没有这个 key 值 ,会返回一个 None
- 可以指定一个默认值(default),来作为第二个参数,当获取不到 key 值时,则返回默认值
d = {'name': '钢铁侠', 'age': 38}
print(d.get('sex', "这个key值不存在"))
这个key值不存在
2.2.2 改变元素
- setdefault(key[,default]):
- 假如这个 key 已经存在于字典中,则返回 key 值,不会对字典有任何影响
- 假如 key 不存在,则向字典中添加这个 key,并设置 value
d = {'name': '钢铁侠', 'age': 38}
d.setdefault('name','黑豹')
print(d)
{'name': '钢铁侠', 'age': 38}
d = {'name': '钢铁侠', 'age': 38}
d.setdefault('sex','男')
print(d)
{'name': '钢铁侠', 'age': 38, 'sex': '男'}
2.2.3 增加元素
- update():将其它字典的 key-value 添加到当前字典中
d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'d': 4, 'e': 5, 'f': 6}
d1.update(d2)
print(d1)
print(d2)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
{'d': 4, 'e': 5, 'f': 6}
2.2.4 删除元素
- del:删除字典的 key-value
- popitem():
- 随机删除一个 key-value(通常是最后一个)
- 将删除的 key-value 以元组返回
d1 = {'a': 1, 'b': 2, 'c': 3}
p1 = d1.popitem()
print(d1, p1)
{'a': 1, 'b': 2} ('c', 3)
- pop(key[,default]):
- 根据 key 来删除 key-value,并返回 value 值
- 可以指定一个默认值(default),来作为第二个参数,当获取不到 key 值时,则返回默认值
- clear():清空字典
2.2.5 字典浅复制
- copy():用于对字典进行一个浅复制
- 浅复制只复制了字典本身,假如字典中的元素为一字典,则不被复制
d1 = {'a': {'name': '皮卡丘', 'age': 18}, 'b': 2, 'c': 3, 'property': '电'}
d2 = d1.copy()
d2['property'] = '火'
d2['a']['name'] = '小火龙'
print(d1, id(d1))
print(d2, id(d2))
{'a': {'name': '小火龙', 'age': 18}, 'b': 2, 'c': 3, 'property': '电'} 1960787992368
{'a': {'name': '小火龙', 'age': 18}, 'b': 2, 'c': 3, 'property': '火'} 1960788017368
2.2.6 遍历字典
- keys():字典所有 key
- values():字典所有 value
- items():字典所有 item
d = {'a': 1, 'b': 2, 'c': 3}
for k, v in d.items():
print(k, '=', v)
a = 1
b = 2
c = 3
3 集合
- 集合的特点:
- 集合只能储存不可变对象
- 集合不能出现重复元素
- 集合储存的对象是无序的,无法通过索引取值
- 可用 set() 函数来创建集合
s = set({'a': 1, 'b': 2, 'c': 3})
print(s, type(s))
{'c', 'a', 'b'} <class 'set'>