前面我们所接触的数据类型都是存单个值,今天我们来看看可以存多个值的列表和字典。
预习:
1、有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
2、模拟队列
模拟堆栈
3、有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
4、统计s='hello alex alex say hello sb sb'中每个单词的个数
结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
一、列表(list)
用途(存多个值,可以修改):爱好,装备,女朋友们
格式:包含在[]内,用逗号分割开
ps:
hobby=['play','eat','sleep']
基本操作:
1 #查看: 2 girls=['alex','wsb',['egon','ysb']] 3 print(girls[2]) #['egon', 'ysb'] 4 print(girls[2][0]) #'egon' 5 6 #增加 7 girls.append(元素) 8 9 #删除 10 girls.remove(元素) 11 del girls[元素的索引] 12 13 #修改 14 girls[0]='alexSB'
常用方法:

l=[1,2,3] #l=list([1,2,3]) print(type(l)) #pat1===》优先掌握部分 # 索引 l=['a','b','c','d','e','d'] print(l.index("d")) print(l.count("d")) #统计个数 # 切片 l=['a','b','c','d','e','f'] print(l[1:5]) print(l[1:5:2]) print(l[2:5]) print(l[-1]) #了解 # print(l[-1:-4]) # print(l[-4:]) # l=['a','b','c','d','e','f'] # print(l[-2:]) # 追加 hobbies=['play','eat','sleep','study'] hobbies.append('girls') print(hobbies) # 删除 hobbies=['play','eat','sleep','study'] x=hobbies.pop(1) #不是单纯的删除,是删除并且把删除的元素返回,我们可以用一个变量名去接收该返回值 print(x) print(hobbies) #了解 # del hobbies[1] #单纯的删除 # hobbies.remove('eat') #单纯的删除,并且是指定元素去删除 # 长度 hobbies=['play','eat','sleep','study'] print(len(hobbies)) # 包含in hobbies=['play','eat','sleep','study'] print('sleep' in hobbies) msg='hello world egon' print('egon' in msg) ##pat2===》掌握部分 #插入(可以指定位置插入) hobbies=['play','eat','sleep','study','eat','eat'] hobbies.insert(1,'walk') hobbies.insert(1,['walk1','walk2','walk3']) print(hobbies) #可以一次插入多个(仅追加) hobbies.extend(['walk1','walk2','walk3']) print(hobbies) #pat3===》了解部分 #clear 清空列表 hobbies=['play','eat','sleep','study','eat','eat'] hobbies.clear() print(hobbies) #copy 复制 hobbies=['play','eat','sleep','study','eat','eat'] l=hobbies.copy() print(l) #reverse 倒序排列 l=[1,2,3,4,5] l.reverse() print(l) #sort 排序 l=[100,9,-2,11,32] l.sort() #sort(reverse=True)从大到小 print(l)
二、字典(dict)
用途:存多个值,这一点与列表相同,值可以是任意数据类型,存在里面的数据是无序的
特征:每一个值都一个唯一个对应关系,即key,强调一点,key必须是不可变类型
格式:定义在{},逗号分割,每一个元素的形式都是key:value
ps:
student_info={'age':22,'name':'lln','sex':male,'hobbies':['zsb0','zsb1','zsb2','zsb30']}
基本操作:
1 #查看 2 student_info={'age':18,'name':'lln','sex':male,'hobbies':['zsb0','zsb1','zsb2','zsb30']} 3 print(student_info['age']) #18 4 print(student_info['hobbies']) #['zsb0', 'zsb1', 'zsb2', 'zsb30'] 5 print(student_info['hobbies'][2]) #'zsb2' 6 7 #增加 8 student_info['stu_id']=123456 9 10 #删除 11 del student_info['stu_id'] 12 13 #修改 14 student_info['name']='alexSB'
常用方法:

# info=['egon','male',18] # info_dic={'name':'egon','age':18,'sex':'male'} #存/取 info_dic={'name':'egon','age':18,'sex':'male'} # print(info_dic['name11111111']) #报错 print(info_dic.get('name',None)) #取不删 info_dic['level']=10 #存 print(info_dic) # 删除 #pop:key存在则弹出值,不存在则返回默认值,如果没有默认值则报错 info_dic={'name':'egon','age':18,'sex':'male'} print(info_dic.pop('name',None)) #删制定 print(info_dic) print(info_dic.popitem()) #随机返回并删除字典中的一对键和值(项)。 print(info_dic) # del info_dic['name'] # 键s,值s,键值对 info_dic={'name':'egon','age':18,'sex':'male'} print(info_dic.keys()) print(info_dic.values()) print(info_dic.items()) # 循环 # for k in info_dic: # # print(k,info_dic[k]) # print(k) # print('========>') # for k in info_dic.keys(): # print(k) # for val in info_dic.values(): # print(val) # for k,v in info_dic.items(): #k,v=('name', 'egon') # print(k,v) # 长度 info_dic={'name':'egon','age':18,'sex':'male'} print(len(info_dic)) # 包含in info_dic={'name':'egon','age':18,'sex':'male'} print('name' in info_dic) print('name' in info_dic.keys()) print('egon' in info_dic.values()) print(('name','egon') in info_dic.items()) #掌握 #update 没有则添加有责更新 info_dic={'name':'egon','age':18,'sex':'male'} info_dic.update({'a':1,'name':'Egon'}) print(info_dic) #字典中列表值添加 info_dic['hobbies']=[] info_dic['hobbies'].append('study') info_dic['hobbies'].append('read') print(info_dic) #setdefault:key不存在则设置默认值,并且放回值默认值 #key存在则不设置默认,并且返回已经有的值 info_dic={'name':'egon','age':18,'sex':'male'} print(info_dic.setdefault('hobbies',[1,2])) print(info_dic) print(info_dic.setdefault('hobbies',[1,2,3,4,5])) print(info_dic) #ps: info_dic={'name':'egon','age':18,'sex':'male'} # {'name':'egon','age':18,'sex':'male','hobbies':['study']} info_dic.setdefault('hobbies',[]).append('study') print(info_dic) # {'name':'egon','age':18,'sex':'male','hobbies':['study','read']} info_dic.setdefault('hobbies',[]).append('read') print(info_dic) # {'name':'egon','age':18,'sex':'male','hobbies':['study','read','sleep']} info_dic.setdefault('hobbies',[]).append('sleep') print(info_dic) #l与info_dic[hobbies]指向的空间相同 l=info_dic.setdefault('hobbies',[]) print(l,id(l)) print(id(info_dic['hobbies'])) print(info_dic) #了解 #copy 复制 info_dic={'name':'egon','age':18,'sex':'male'} d=info_dic.copy() print(d) #clear 清空 info_dic.clear() print(info_dic) # 快速批量创建字典 d1=dict.fromkeys(('name','age','sex'),None) d2=dict.fromkeys(('name','age','sex'),('egon',18,'male')) print(d1) print(d2) #{'name': ('egon', 18, 'male'), 'age': ('egon', 18, 'male'), 'sex': ('egon', 18, 'male')} #其他创建字典方法 info=dict(name='egon',age=18,sex='male') print(info) info=dict([('name','egon'),('age',18)]) print(info)
预习解答:

#1、有列表data=['lln',22,[1999,9,19]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量 data=['lln',22,[1999,9,19]] name = data[0] age = data[1] year = data[2][0] month = data[2][1] day = data[2][2] print(name,age,year,month,day) #2、队列:先进先出 queue_l=[] #入队 queue_l.append('first') queue_l.append('second') queue_l.append('third') print(queue_l) #出队 print(queue_l.pop(0)) print(queue_l.pop(0)) print(queue_l.pop(0)) #堆栈:先进后出,后进先出 l=[] # #入栈 l.append('first') l.append('second') l.append('third') # #出栈 print(l) print(l.pop()) print(l.pop()) print(l.pop()) ''' 3、有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中, 将小于 66 的值保存至第二个key的值中。 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值} ''' x = {"k1":[],"k2":[]} y = [11,22,33,44,55,66,77,88,99,90] for i in y : if i > 66 : x["k1"].append(i) if i < 66: x["k2"].append(i) print(x) ''' 4、统计s='hello alex alex say hello sb sb'中每个单词的个数 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2} ''' s = "hello alex alex say hello sb sb" s = s.split() msg = {} for i in s : if i in msg : msg[i] += 1 else : msg[i] = 1 print(msg)
小知识点:
可变类型与不可变类型
可变数据类型:在id不变的情况下,数据类型内部的元素可以改变 ps:列表,字典
不可变数据类型:value改变,id也跟着改变 ps:数字,字符串,布尔