第4关-精华笔记
课程⽬标
1. 熟练掌握列表、字典中元素的增删改查
2. 理解列表和字典的区别
课程难点
1. 列表与字典增删改查的异同
2. 正确使⽤切⽚,深刻理解切⽚时冒号左右数字的意义
课程重要内容
⼀、列表
语法格式
数据存储在中括号[]⾥,⽤逗号隔开并使⽤等号赋值给列表。中括号⾥⾯的每⼀个数据
叫作“元素”。
列表中的元素是有⾃⼰明确的“位置”的,元素相同,在列表中排列顺序不同,就是两个
不同的列表。
列表中字符串、整数、浮点数都可以存储。
list1 = ['小明',17,5.2]
提取元素
偏移量:元素在列表中的编号。
偏移量是从0开始的;
列表名后加带偏移量的中括号,就能取到相应位置的元素。
结果是⼀个元素
切⽚:⽤冒号来截取列表元素的操作。
冒号左边空(或者为0), :m,表示从头取m个元素;
右边空(或者为0),n: ,跳过前n个元素把剩下的取完;
冒号左右都有数字时,n:m,表示跳过前n个元素,取到第m个。(取出前m个元素中
除了前n个后剩下的那些)
切⽚截取了列表的⼀部分,所以得到的结果仍然是⼀个列表。(即使只有⼀个元素,也
是在列表⾥的,要与⽤偏移量取单个元素的⽅法区别开)
students 1 = ['小明','小红','小刚'] students[2] # 使用偏移量提取单一元素,结果显示: # 小刚 print(students[2:]) # 使用切片,即使结果仍然只有一个元素,但显示为列表: # ['小刚']
特别地,a,b,c=students,也可以提取出列表中的元素,变量分别⽤逗号隔开,且变量
的数量与列表元素个数⼀致,⼀⼀对应,最终列表元素会分别赋值给变量,例如:
appetizer = ['话梅花生','拍黄瓜','凉拌三丝'] a,b,c = appetizer print(a) print(b) print(c) print(a,b,c) #结果显示为 #话梅花生 #拍黄瓜 #凉拌三丝 #话梅花生 拍黄瓜 凉拌三丝
增加/删除元素
增加元素
列表名.append()
注意这⾥是.不是空格!append后的括号⾥只能接受⼀个参数,结果是让列表末尾新增
⼀个元素。列表⻓度可变,理论容量⽆限,所以⽀持任意的嵌套。
list3 = [1,2] #添加‘3’这个元素 list3.append(3) print(list3) #结果显示: #[1,2,3] list3.append(4,5) list3.append([4,5]) print(list3) # 添加[4,5]这个列表,也就是append()的参数为一个列表,也是一个参数,所以不会报错 # 结果显示: # [1,2,3,[4,5]]
但是append(4,5)会报错,因为给了两个元素(没有作为⼀个整体,所以算两个参数)。
注意!!!千万不能赋值:a=student.append(3),这样a⾥只有none。
删除元素
del 列表名[元素的索引] 。
注意这⾥是空格不是.!因为del是语句,是命令。
与append()函数类似,能删除单个元素、多个元素(切⽚)、整个列表。
修改元素
使⽤偏移量修改对应位置的元素。
list1 1 = ['小明','小红','小刚','小美'] list1[1]='小蓝' print(list1) # 结果显示 # ['小明','小蓝','小刚','小美']
⼆、字典
字典所存储的两种数据若存在⼀⼀对应的情况,⽤字典储存会更加⽅便。唯⼀的键和对
应的值形成的整体,我们就叫做【键值对】。键具备唯⼀性,⽽值可重复。
语法格式
- 字典外层是⼤括号{},⽤等号赋值;
- 列表中的元素是⾃成⼀体的,⽽字典的元素是由键值对构成的,⽤英⽂冒号连接。
有多少个键值对就有多少个元素。如’⼩明’:95,其中我们把’⼩明’叫键(key),95
叫值(value)。
- 键值对间⽤逗号隔开
- 字典中数据是随机排列的,调动顺序也不影响。所以列表有序,要⽤偏移量定位;
字典⽆序,便通过唯⼀的键来定位。(注:len()函数⽤于获取数据⻓度)
students = ['小明','小红','小刚'] scores = {'小明':95,'小红':90,'小刚':100} print(len(students)) print(len(scores)) #结果显示 #3 #3
#字典的元素个数,数冒号就行了
提取元素
字典没有偏移量,所以在提取元素时,中括号中应该写键的名称,即字典名[字典的
键]。提取出来的是key对应的value,⽽不会显示键的数据!
增加
scores = {'小明': 95, '小红': 90, '小刚': 90} scores['小明'] # 结果显示 # 95
增加/删除元素
新增元素
字典名[键] = 值。
每次只能新增⼀个键值对。scores[‘⼩刚’,’⼩美’]=92,85,这样是不对的,最终会输出
(‘⼩刚’,’⼩美’:(92,85))作为⼀个键值对。
# 原字典 album = {'周杰伦':'七里香'} # 新增一个键值对 album['林俊杰'] = '小酒窝' # 增加后打印效果 print(album) # 结果: {'周杰伦':'七里香','林俊杰':'小酒窝'} # 通过键访问 print(album['周杰伦']) # 结果: 七里香
删除元素
del 字典名[键]
修改
album = {'周杰伦':'七里香','王力宏':'心中的日月'} del album['周杰伦'] print(album) # 结果显示 # {'王力宏':'心中的日月'}
修改元素
如果不是整个键值对都不需要,只需要改变对应key下的value,修改就可以,不需
要del。
dict1 = {'小明':'男'} dict1['小明'] = '女' # 字典没有偏移量,只能通过key找到元素位置。蔡明也是小明,嘿嘿改为"女" print(dict1) # 结果显示 # {'小明': '女'}
三、列表与字典的嵌套
列表嵌套列表
列表中有两个列表元素,[1]表示取第⼆个元素(列表),[2]表示取第⼆个元素中
的第三个元素(偏移量为2)。
student=[['小红','小黄','小橙'],['小绿','小蓝','小紫','小青']] print(student[1][2]) #结果显示为 #小紫
字典嵌套字典
字典中存储了两个字典,所以提取数据时只能⽤key值。
scores={'第一组':{'小明':95,'小红':96},'第二组':{'小刚':94,'小青':99}} print(scores['第一组']['小红']) #结果显示: #96
列表嵌套字典
从外到内开始分析,最外层是列表,因此使⽤偏移量来获取⾥⾯到元素。 元素的数据
类型是字典。
如下: 学⽣信息是⼀个个字典,其中包含名字班级等信息,构造成⼀个学⽣表students列表
student_1 = {'姓名':'小明', '兴趣':'篮球', '成绩':'优秀', '学号': 13} student_2 = {'姓名':'小刚', '兴趣':'羽毛球', '成绩': '中等', '学号': 115} student_3 = {'姓名':'小蔡', '兴趣':'乒乓球', '成绩': '良好', '学号': 150} students = [student_1, student_2, student_3] # 每位同学的成绩获取 level_ming = students[0]['成绩'] level_gang = students[1]['成绩'] level_cai = students[2]['成绩']
————————————更新于2021.5.23