数据类型的最后三个类型:元组类型、字典类型、集合。
一、元组类型:
(1)用途:用于存放多个值,当存放的多个值只有读的需求没有改的需求时用元组最合适
(2)定义方式:在()内用逗号分隔开多个任意类型的值
例子:t = ('a',1,3.1,['a','b'])
res = tuple('hello')
print(res)
res = tuple({'x':1,'y':2})
print(res)
(3)常用操作+内置方法
1、按索引取值(正向取+反向取):只能取
t = ('a','b',1)
t[0]= 111会显示bug
2、切片(顾头不顾尾,步长)
t = ('h','e','l','l','o')
res = t[1:3]
print(res)
print(t)
3、长度
t = ('h','e','l','l','o')
print(len(t))
4、成员运算in和not in
t = ('h','e','l','l','o')
print('l' in t)
5、循环
t = ('h','e','l','l,'o')
for item in t:
print(item)
(4)总结
元组可以存多个值
有序
不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
掌握的方法:
t = ('a','b','c')
print(t.index('a'))
print(t.count('b'))
二、字典类型
(1)用途:用来存放多个不同种类的值
(2)定义方式:在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(intfloatstr uple)
d = {0:'x',3.1:'y','name':'egon',(1,2,3):'aaa'} #d = dict(....)
(3)常用操作+内置的方法
1、按key存取值:可存可取
d = {'x':1}
print(d['x'])
print(id(d))
2、长度len
d={'x':1,'y':2,'z':3}
print(len(d))
3、成员运算in和not in
d = {'x':1,'y':2,'z':3}
print(1 in d)
print('x' in d)
4、删除
d = {'x':1,'y':2,'z':3}
del d['y']
print(d)
res = d.pop('y')
print(d)
print(res)
res = d.popitem()
print(res)
5、键keys(),值values(),键值对items()
d={'name:'egon','age':18,'sex':'male','hobbies':[1,2,3]}
print(d.keys())
print(list(d.keys()))
print(d.values())
print(d.items())
6、循环
d={'name:'egon','age':18,'sex':'male','hobbies':[1,2,3]}
for k in d.keys():
print(k)
for k in d:
print(k)
for v in d.values():
print(v)
for k,v in d.items():
print(k,v)
7、该类型总结
存多个值
无序
可变
8、需要掌握的操作
(1)get方法
查找功能,类似于v1=d['name']
但是get方法在输入的key值不在字典里时会返回None
(2)update方法:当添加的值有key时,修改原有的key的值,没有key时往字典里面添加一个新的数据
d = {'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
d.update({'x':1,'name':'EGON'})
print(d)
(3)formkeys:需求是快速新造出一个字典,value的初始值全都为None,而key来自于一个列表
keys=['name','age','sex']
for k in keys:
d[k]=None
d = {}.fromkeys(keys,None)
print(d)
(4)setdefault
d = {'x':1,'y':2}
按照默认的操作形式
d['x']=1111 #key存在则修改
d['z']=1111 #key不存在则新增
按照setdefault的形式
d = {'x':1,'y':2}
res = d.setdefault('x',11111) #在key存在的情况下不修改值,会返回原值
print(d)
print(res)
res = d.setdefault('z',11111)#在key不存在的情况下回新增值,会返回新增的值
print(d)
print(res)
三、集合
1、什么是集合
在{}内用逗号分隔开多个值,集合的特点:
(1)每个值必须是不可变类型
(2)集合无序
(3)集合以内元素不能重复
2、为何要用集合
(1)用于做关系运算
(2)去重
3、如何用集合
s = {1,1.3,'aa',[1,2]}
s = {1,1.3,'aa'}
print(s)
集合的第一大用途:关系运算
pyhons = ['egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯']
linuxs = ['欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb']
(1)求同时报名两门课程的学生姓名:交集
print(pythons & linuxs)
(2)求报名老男孩学校课程的所有学生姓名:并集
print(pythons | linuxs)
(3)求只报名python课程的学生姓名:差集
print(pythons - linuxs)
(4)求没有同时报名两门课程的学生姓名:对称差集
print(pythons - linuxs) | (linuxs - pythons)
(5)父子集:指的是一种包含于被包含的关系
s1 = {1,2,3}
s2 = {1,2}
print(s1 >= s2)
集合的第二大用途:去重
集合去重的局限性:
1、会打乱原值的顺序
2、只能针对不可变的值去重
stus = {'egon','lxx','lxx','alex','alex','yxx'}
new_1 = list(set(stus))
print(new_1)
old_1 = [1,[1,2],[1,2]]
set(old_1) 会报错,因为用了可变类型 列表
需要掌握的操作:
s1 = {1,2,3}
s1.update({3,4,5})
print(s1)
print(s1.pop())
print(s1)
s1.remove(2)
print(s1)
s1 = {1,2,3}
s2 = {4,5}
print(s1.isdisjoint(s2))
总结:
存多个值
无序
set可变