Python学习Day7
今日内容: 1.数据类型及内置方法: list tuple dict set 一、列表类型 ========================基本使用======================= 1.用途:记录多个值(同种属性) 2.定义方式:在[]内用逗号分隔开多个任意类型的值 l=['a','b,'c',] l=list(['a','b,'c',]) 类型转换 l=list('hello') l=list({'x':1,'y':2}) print(l) 3.常用操作+内置方法 优先掌握的操作 l=['a','b','c','d','e'] 1.按索引存取值(正向存取+反向存取):即可存也可取 print(l[0]) print(l[-1]) print(id(l)) l[0]='A' print(id(l)) l[4]='EEEEEE' print(l) l[5]='dddddd' 2、切片(顾头不顾尾,步长) l=['a','b','c','d','e'] print(l[1:4]) print(l) 3、长度 l=['a','b','c','d','e'] print(len(l)) 4、成员运算in和not in print('a' in l) print('ssssss' not in l) 5、追加&插入 l=['a','b','c','d','e'] l.append(3333333) l.append(44444) print(l) l.insert(0,11111111111) print(l) 6、删除 l=['a','b','c','d','e'] del l[0] res=l.remove('b') print(l) print(res) res=l.pop(0) print(l) print(res) 7、循环 l=['a','b','c','d','e'] for item in l: print(item) 需要掌握的操作 l=['a','b','a','c','d','e'] print(l.count('a')) l=['a','b','a','c','d','e'] items=[1,2,3,4,5] for item in items: l.append(item) l.extend(items) print(l) l=['a','b','a','c','d','e'] print(l.index('a',2,5)) l.index(123123123123123123123123) if 123123123123123123123123 in l: print(l.index(123123123123123123123123)) l=['a','b','a','c','d','e'] l.reverse() print(l) l=[10,-1,3,11,9] l.sort(reverse=True) print(l) print(l.extend(['a','b','c'])) print(l.pop(0)) print(l) ======================================该类型总结==================================== 存多个值 有序 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash) 练习题 1. 队列:先进先出 l=[] # 入队 l.append('first') l.append('second') l.append('third') print(l) # 出队 print(l.pop(0)) print(l.pop(0)) print(l.pop(0)) 2. 堆栈:后进先出 l=[] # 入栈 l.append('first') l.append('second') l.append('third') print(l) # 出栈 print(l.pop()) print(l.pop()) print(l.pop()) 二、元组类型 元组tuple: ======================================基本使用====================================== 1、用途:元组就是一个不可变的列表 2、定义方式:在()内用逗号分隔开多个任意类型的元素 t=(1,2.2,'aa',('b','c'),['a','b','c']) # t=tuple(...) print(type(t)) 强调: l=['a'] print(type(l),l[0]) t=('a',) print(type(t)) print(t) msg=('hello world') 类型转换 t1=tuple('hello') t2=tuple([1,2,3]) print(t1) print(t2) 3、常用操作+内置的方法 优先掌握的操作: t=(1,2.2,'aa',('b','c'),['a','b','c']) 1、按索引取值(正向取+反向取):只能取 print(t[0]) print(t[-1]) t[0]=1111111111 2、切片(顾头不顾尾,步长) t=('a','b','c','e','f') print(t[1:4]) 3、长度 print(len(t)) 4、成员运算in和not in print('a' in t) 5、循环 for item in t: print(item) 需要掌握的操作 t=('a','b','c','e','a','f') print(t.index('a',1,5)) print(t.count('a')) ======================================该类型总结==================================== 存多个值 有序 不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash) t=('a','b','c') print(id(t)) t=('A','B','C') print(id(t)) t=('a',111,['b','c']) print(id(t[0]),id(t[1]),id(t[2])) t[2][0]='B' print(t) print(id(t[0]),id(t[1]),id(t[2])) t[0]='A' t[2]=[1,2,3] l=['a','b','c'] l[0]='A' 三、字典类型 字典类型dict ======================================基本使用====================================== 1、用途:记录多个值,列表是索引对应值,而字典是key对应值,其中key对value有描述性的功能 2、定义方式:在{}用逗号分隔开多个元素,每个元素都是key:value的形式,其中key可以不可变类型,通常是字符串类型 而value可以是任意类型 d={1:'aaa',2.2:'bbb','xxx':'ccc',(1,2,3):'dddd'} #d=dict(...) print(d[(1,2,3)]) 类转换 d=dict(x=1,y=2,z=3) print(d) items=[('name','egon'),('age',18),('gender','male')] d={} for item in items: d[item[0]]=item[1] d=dict(items) print(d) 了解 keys=['name','age','gender','height','weight'] d={} for key in keys: d[key]=None d={}.fromkeys(keys,None) print(d,type(d)) 3、常用操作+内置的方法 优先掌握的操作: 1、按key存取值:可存可取 dic={'name':'egon','age':18} dic['xxxx'] print(dic.get('name')) print(dic.get('xxx')) print(dic['name']) dic['name']='EGON' dic['gender']='male' print(dic) l=['a','b','c'] l[0]='A' l[4]='AAA' 2、长度len dic={'name':'egon','age':18} print(dic) print(len(dic)) 3、成员运算in和not in :是以字典的key为准的 dic={'name':'egon','age':18} print('name' in dic) print('egon' in dic) 4、删除 dic={'name':'egon','age':18} del dic['name'] print(dic) res=dic.pop('name') print(dic) print(res) res=dic.popitem() print(res) 5、键keys(),值values(),键值对items() 在python2 >>> dic={'name':'egon','age':18} >>> >>> >>> dic.keys() ['age', 'name'] >>> >>> >>> dic.values() [18, 'egon'] >>> >>> >>> dic.items() [('age', 18), ('name', 'egon')] 在python3 >>> dic={'name':'egon','age':18} >>> >>> dic.keys() dict_keys(['name', 'age']) >>> dic.values() dict_values(['egon', 18]) >>> dic.items() dict_items([('name', 'egon'), ('age', 18)]) 6、循环 dic={'name':'egon','age':18} for k in dic: print(k) for k in dic.keys(): print(k) for v in dic.values(): print(v) for k,v in dic.items(): #k,v=('name', 'egon') print(k,v) 需要掌握的操作 dic={'name':'egon','age':18} dic={'name':'egon','age':18} dic.update({'age':19,'gender':'male'}) print(dic) dic={'name':'egon','age':18} 当key存在时,不改原值,返回原值 res=dic.setdefault('name','EGON') print(dic) print(res) 当key不存在时,增加新值 res=dic.setdefault('gender','male') print(dic) print(res) ======================================该类型总结==================================== 存多个值 无序 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash) 四、集合类型 pythons=['张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'] linuxs=['oldboy','张铁蛋','赵银胆','alex','wxx'] res=[] for stu in pythons: if stu in linuxs: res.append(stu) print(res) 集合类型set ======================================基本使用====================================== 1、用途:I: 关系运算 II:去重 2、定义方式:在{}内用逗号分隔开多个元素,但是元素的特点是 I: 集合内的元素必须是不可变类型 II: 集合内元素无序 III: 集合内元素不能重复 s={1,'aaa',2,} #s=set(...) print(s,type(s)) s=set() print(s,type(s)) s={1,1,1,1,1,1,1,1,1,1,1,1,'a','a','a'} print(s) 数据类型转换 res=set('hello') print(res) res=set([1,'a','b']) print(res) 3、常用操作+内置的方法 优先掌握的操作: 1、长度len 2、成员运算in和not in pythons={'张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'} linuxs={'oldboy','张铁蛋','赵银胆','alex','wxx'} 3、|合集:求所有报名的学生 print(pythons | linuxs) print(pythons.union(linuxs)) 4、&交集:求同时报名两门课程的学生 print(pythons & linuxs) 5、-差集: 求只报名python课程的学员 print(pythons - linuxs) print(linuxs - pythons) #求只报名linux课程的学员 6、^对称差集:求没有同时报名两门课程的学生 res=(pythons - linuxs) | (linuxs - pythons) res=pythons ^ linuxs print(res) 7、== s1={1,2,3} s2={3,2,1} print(s1 == s2) 注意:父子集描述的是一种包含与被包含的关系 8、父集:>= 9、子集:<= s1={1,2,3} s2={1,2,3,4} print(s2 >= s1) print(s1 <= s2) 需要掌握的 s1={1,2,3} s1.update({3,4,5,6}) print(s1) s1={1,'aa','bb',3} print(s1.pop()) res=s1.remove('bbbbbb') print(s1) print(res) s1.discard('bbb') s1.add(4) print(s1) ======================================该类型总结==================================== 存多个值 无序 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash) 集合的去重 局限性 1. 只能针对不可变类型 2. 不能保证原来的顺序 names=['egon','egon','egon','alex','alex','kevin'] new_names=list(set(names)) print(new_names) l=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'kevin','age':20,'sex':'female'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, ] new_l=[] for dic in l: if dic not in new_l: new_l.append(dic) print(new_l)