python 第4关 列表和字典-收纳的艺术

第4关 列表和字典-收纳的艺术

课程目标

1.熟练掌握列表、字典中元素的增删改查
2.理解列表和字典的区别

课程难点

1.列表与字典增删改查的异同
2.正确使用切片,深刻理解切片时冒号左右数字的意义

课程重要内容重现

一、列表

1.代码格式
students是列表名,数据存储在\color{red}{中括号[]}里,用逗号隔开并使用等号赋值给列表。中括号里面的每一个数据叫作“元素”。
列表中的元素是有自己明确的“位置”的,元素相同,在列表中排列顺序不同,就是两个不同的列表。
列表中字符串、整数、浮点数都可以存储。

list=['小明',17,5.2]

1.提取元素
1)、偏移量:元素在列表中的编号。

  • 偏移量是从0开始的;
  • 列表名后加带偏移量的中括号,就能取到相应位置的元素。
    2)、切片:用冒号来截取列表元素的操作。
  • \color{red}{冒号左边空(或者为0),:m,表示从头取m个元素;}
  • \color{red}{右边空(或者为0),n:,跳过前n个元素把剩下的取完;}
  • \color{red}{冒号左右都有数字时,n:m,表示跳过前n个元素,取到第m个。}
    \color{red}{(取出前m个元素中除了前n个后剩下的那些)}

切片截取了列表的一部分,所以得到的结果仍然是一个列表。(即使只有一个元素,也是在列表里的,与用偏移量取单个元素区别开)

students=['小明','小红','小刚']
print(students[2])
#使用偏移量提取单一元素,结果显示:
#小刚
print(students[2:])
#使用切片,即使结果仍然只有一个元素,但显示为列表:
#['小刚']

3)特别地,a,b,c=students,也可以提取出列表中的元素,变量分别用逗号隔开,且变量的数量与列表元素数一致,最终列表元素会分别赋值给变量,例如:

appetizer=['话梅花生','拍黄瓜','凉拌三丝']
a,b,c=appetizer
print(a)
print(b)
print(c)
print(a,b,c)
#结果显示为
#话梅花生
#拍黄瓜
#凉拌三丝
#话梅花生 拍黄瓜 凉拌三丝

1.增加/删除元素.

1)增加元素列表名.append()。注意这里是.不是空格!
append后的括号里只能接受一个参数,结果是让列表末尾新增一个元素。列表⻓度可变,理论容量无限,所以支持任意的嵌套。

list3=[1,2]
list3.append(3)
print(list3)
#添加‘3’这个元素
#结果显示:
#[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) 如果想一起加两个元素 用expend

aList = [123, 'xyz', 'zara', 'abc', 123];
bList = [2009, 'manni'];
aList.extend(bList)

print "Extended List : ", aList ;
以上实例输出结果如下:
Extended List :  [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']

2)删除元素del列表名[元素的索引]。注意这里是空格不是.了!
与append()函数类似,能删除单个元素、多个元素(切片)、整个列表。
3)修改元素
使用偏移量修改对应位置的元素。

list1 = ['小明','小红','小刚','小美']
list1[1] = '小兰'
print(list1)
#结果显示
#['小明','小兰','小刚','小美']

二、字典

1.代码格式

  • 字典外层是大括号{},用等号赋值;
  • 列表中的元素是自成一体的,而字典的元素是由键值对构成的,用英文冒号连接。有多少个键值对就有多少个元素。如'小明':95,其中我们把'小明'叫键(key),95叫值(value)。
  • 键值对间用逗号隔开
    所存储的两种数据若存在一一对应的情况,用字典储存会更加方便。唯一的键和对应的值形成的整体,我们就叫做【键值对】。键具备唯一性,而值可重复。
    字典中数据是随机排列的,调动顺序也不影响。所以列表有序,要用偏移量定位;字典无序,便通过唯一的键来取值。
    (注:len()函数用于获取数据⻓度)
students=['小明','小红','小刚']
scores={'小明':95,'小红':90,'小刚':90}
print(len(students))
print(len(scores))
#结果显示
#3
#3
#字典的元素个数,数冒号就行了

2.提取元素

字典没有偏移量,所以在提取元素时,中括号中应该写键的名称,即字典名[字典的键]。提取出来的是key对应的value,而不会显示键的数据!

3.增加/删除元素、

1)新增元素
字典名[键]=值。每次只能新增一个键值对。scores['小刚','小美']=92,85,这样是不对的,最终会输出('小刚','小美':(92,85))作为一个键值对。

album={'周杰伦':'七里香'}
album['王力宏']='心中的日月'
album['林俊杰']='小酒窝'
print(album)
print(album['周杰伦'])
#结果显示
#{'周杰伦':'七里香','王力宏':'心中的日月','林俊杰':'小酒窝'}
#七里香

2)删除元素
del字典名[键]

album={'周杰伦':'七里香','王力宏':'心中的日月'}
delalbum['周杰伦']
print(album)
#结果显示
#{'王力宏':'心中的日月'}

3)修改元素
如果不是整个键值对都不需要,只需要改变对应key下的value,修改就可以,不需要del。

dict1={'小明':'男'}
dict1['小明']='女'
print(dict1)
#字典没有偏移量,只能通过key找到元素位置

三、列表与字典的嵌套

1.列表与列表
列表中有两个列表元素,[1]表示取第二个元素(列表),[2]表示取第二个元素中的第三个元素(偏移量为2)。

student=[['小红','小黄','小橙'],['小绿','小蓝','小紫','小青']]1
print(student[1][2])
#结果显示为
#小紫

1.字典与字典
字典中存储了两个字典,所以提取数据时只能用key值。

scores={'第一组':{'小明':95,'小红':96},'第二组'{'小刚':94',小青':99}}
print(scores['第一组']['小红'])
#结果显示:
#96

1.列表与字典
使用偏移量从最外层括号到最内层括号取数。查找townee列表中的第六个元素中的第2个元素(一定是字典,因为之后用的是键值而不是偏移量)中key为'反面⻆色'的value。

townee=[
        {'海底王国':['小美人鱼''海之王''小美人鱼的祖母''五位姐姐'],'上层世界':['王子','邻国公主']},
          '丑小鸭','坚定的锡兵','睡美人','青蛙王子',
          [{'主角':'小红帽','配角1':'外婆','配角2':'猎人'},{'反面角色':'狼'}]]
print(townee[5][1]['反面角色'])
截屏2019-12-22下午11.03.35.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容