1.元组 作用:存多个值,对比列表来说,元组不可变(是可以当做字典的key的),主要是用来读 定义:与列表类型比,只不过[]换成() age=(11,22,33,44,55)本质age=tuple((11,22,33,44,55)) 1.优先掌握的操作: 1、按索引取值(正向取+反向取):只能取 2、切片(顾头不顾尾,步长) 3、长度 4、成员运算in和not in 5、循环 2.字典 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 info={'name':'egon','age':18,'sex':'male'} #本质info=dict({....}) info=dict(name='egon',age=18,sex='male') info=dict([['name','egon'],('age',18)]) {}.fromkeys(('name','age','sex'),None) 1.优先掌握的操作: 1、按key存取值:可存可取 2、长度len 3、成员运算in和not in 4、删除 5、键keys(),值values(),键值对items() 6、循环 案例: 1.有[11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中, 将小于 66 的值保存至第二个key的值中; 比如:{'k1': 大于66的所有值, 'k2': 小于66的所有值} a={'k1':[],'k2':[]} c=[11,22,33,44,55,66,77,88,99,90] for i in c: if i>66: a['k1'].append(i) else: a['k2'].append(i) print(a) 2.统计s='hello alex alex say hello sb sb'中每个单词的个数 s='hello alex alex say hello sb sb' l=s.split() dic={} for item in l: if item in dic: dic[item]+=1 else: dic[item]=1 print(dic) setdefault的功能 1:key存在,则不赋值,key不存在则设置默认值 2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值 d={} print(d.setdefault('a',1)) #返回1 d={'a':2222} print(d.setdefault('a',1)) #返回2222 s='hello alex alex say hello sb sb' dic={} words=s.split() for word in words: #word='alex' dic.setdefault(word,s.count print(dic) #利用集合,去掉重复,减少循环次数 s='hello alex alex say hello sb sb' dic={} words=s.split() words_set=set(words) for word in words_set: dic[word]=s.count(word) print(dic) 3.集合 作用:去重,关系运算, 定义集合: 集合:可以包含多个元素,用逗号分割, 集合的元素遵循三个原则: 1:每个元素必须是不可变类型(可hash,可作为字典的key) 2:没有重复的元素 3:无序 注意:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值 常用方法: 1、长度len 2、成员运算in和not in 3、|合集 4、&交集 5、-差集 6、^对称差集 7、== 8、父集:>,>= 9、子集:<,<= 案例: 1.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} linuxs={'wupeiqi','oldboy','gangdan'} 1. 求出即报名python又报名linux课程的学员名字集合 print(pythons & linuxs) 2. 求出所有报名的学生名字集合 print(pythons | linuxs) 3. 求出只报名python课程的学员名字 print(pythons - linuxs) 4. 求出没有同时这两门课程的学员名字集合 print(pythons ^ linuxs) 2.去重 #列表中元素为可变类型时,去重,并且保持原来顺 l=['a','b',1,'a','a'] print(set(l)) l1=[] for i in l: if i not in l1: l1.append(i) print(l1) l=[ {'name':'egon','age':18,'sex':'male'}, {'name':'alex','age':73,'sex':'male'}, {'name':'egon','age':20,'sex':'female'}, {'name':'egon','age':18,'sex':'male'}, {'name':'egon','age':18,'sex':'male'}, ] # print(set(l)) #报错:unhashable type: 'dict' s=set() l1=[] for item in l: val=(item['name'],item['age'],item['sex']) if val not in s: s.add(val) l1.append(item) print(l1)