一、元组基本信息
二、元组的创建两种方式
1.基础方式:通过()来创建元组,()可以省略
比如:a = (10,20,30) 或 a=10,20,30
只有一个元素,必须加逗号
比如: a = (10,) 或 a = 10,
2.通过tuple()来创建元组
tuple(可迭代的对象)
比如:
a = tuple() #创建空元组
a = tuple('abc')
a = tuple([10,20,30])
a = tuple(range(4))
三、元组的常用方法
1.元组的元素不能修改
2.元组的访问和列表一样,只不过返回的是元组
3.元组的排序
4.zip方法
5.生成器推导式创建元组
(二)字典
一、字典:“键值对”的无序可变序列。每个元素都是一个“键值对”,由键对象和值对象组成
健:任意的不可变数据,且不可重复。整数、浮点数、元组可作为健,列表、字典、集合可变对象不能做键。
值:任意的可变数据,可重复
二、字典的创建
1.通过{}来创建
比如:a = {"name":"zhangsan","age"=18,"job":"teacher"}
2.通过dict()来创建
a = dict(name="gaoqi",age=18,job=teacher)
a = dict([("name","gaoqi"),("age",18)]) #列表里面包元组
a = [("name","gaoqi"),("age",18)] #列表包元组
a = {} #定义空字典
a = dict()
3.通过zip()来创建字典
比如:k = ['name','age','job'] #列表
v = ['zhangsan',18,'teacher']
c = dict(zip(k,v))
4.通过fromkeys创建值为空的字典
a = dict.fromkeys(['name','age','job']) #列表
print(a)
{'name':None,'age':None,'job':None}
三、字典元素的访问
1.通过[键]获得值,键不存在,抛异常
比如:a['name']
2.通过get()方法获得值,推荐使用。键不存在,返回None,键不存在时也可以指定默认对象
比如:a.get('ddd','不存在')
3.列出所有的键值对
比如:a.items()
dict_items([('name','zhangsan'),('age',18),('job','teacher')])
4.列出所有的键,列出所有的值
a.keys()
dict_keys(['name','age','job'])
a.values()
dict_values(['zhangsan',18,'teacher'])
5.len():键值对的个数
6.检测一个键是否在字典中
a = {'name':'zhangsan','age':18,'job':'teacher'}
print('name' in a)
True
四、字典元素的修改和删除
1.新增键值对:如果键已经存在,则覆盖其值,否则新增
比如:a = {'name':'zhangsan','age':18,'job':'teacher'}
a['address'] = '中山门'
print(a)
{'name':'zhangsan','age':18,'job':'teacher','address':'中山门'}
a['age'] = 19
print(a)
{'name':'zhangsan','age':19,'job':'teacher','address':'中山门'}
2.update():将新字典中的所有键值对添加到旧字典,key相同,则覆盖
3.字典中的删除
del():删除指定元素 比如:del(a['name'])
clear():清空整个字典 比如:a.clear()
pop():删除指定元素,并返回值对象 比如:b = a.pop('name') print(b) #zhangsan
4.popitem():随机删除,返回删除的键值对
比如:
五、序列解包用于列表元组字典
序列解包:方便对多个变量赋值
六、表格数据的存储--使用列表和字典存储
七、字典的核心存储知识
字典通过将key值与左侧0-7对应来存储数据。
1.先将key用hash()来转为数字
2.用bin()将数字转为二进制
3.二进制数通过三位或者六位、八位等偏移来对应数字,确定数字后面没值则存储,有值继续偏移
4.当字典的存储,2/3已满时,则会扩容,扩容则偏移位数会有变化
八、字典底层取值
1.键通过hash()、bin()转为二进制,然后偏移比对,找到对应的取出键,该键值再转为二进制,相同,则表示找对了,不同继续偏移寻找
九、集合