首先要认识列表的格式
students_rank = [
'妙玉', '秦可卿', '薛宝钗', '李纨', '王熙凤', '贾迎春', '贾巧姐', '贾元春',
'林黛玉', '贾探春', '史湘云', '贾惜春']
# 代码中,下标以0开始,比如 【妙玉】的下标为0、现实中的排名为1
获取下标:
# 现在你想快速得知黛玉的排名,要怎么做呢?
# 列表提供了 index() 方法,使用 列表.index(元素内容) 的形式,我们可以很方便地获得元素在列表中的索引值:
index_daiyu = students_rank.index('林黛玉')
print(index_daiyu)
# 输出:8
# 排名 = 下标 + 1
print('黛玉的排名是', index_daiyu + 1)
通过下标查询结果:
从金陵十二钗(students
列表)里面挑选 第 3 位 和 倒数第 4 位 同学,然后把她的名字打印到屏幕上吧。然后查找 贾惜春 在名单中是第几个名字,补全代码,让打印结果正确。
print(students[2])
print(students[-4])
rank_xichun = students.index('贾惜春')
print('贾惜春是第', rank_xichun + 1, '个名字')
# 输出结果为:
贾元春
王熙凤
贾惜春是第 8 个名字
列表的修改:
将第二个名字「秦可卿」,改为「贾宝玉」
# 第二个名字,索引为 1
students[1] = '贾宝玉'
print(students[1])
# 输出:'贾宝玉'
# 打印整个列表看看效果
print(students)
# 输出:['林黛玉', '贾宝玉', '贾元春', '贾探春', '史湘云', '妙玉', '贾迎春', '贾惜春', '王熙凤', '贾巧姐', '李纨', '秦可卿']
突然,王熙凤和老师你报告,要外出办事,让夫君贾琏代听,我们又要再次修改列表。
我们发现,王熙凤在名单中靠后,这时候我们要用到 反向索引 来修改名单:
# 王熙凤是倒数第四个
students[-4] = '贾琏'
print(students[-4])
# 输出:'贾琏'
# 打印整个列表看看效果
print(students)
# 输出:['林黛玉', '贾宝玉', '贾元春', '贾探春', '史湘云', '妙玉', '贾迎春', '贾惜春', '贾琏', '贾巧姐', '李纨', '秦可卿']
列表的增加:
宝玉和贾琏跑过来说,“老师您学识渊博又幽默风趣,我们都想正式加入课程。”你同意了,于是你的花名册又要更新啦~怎么操作呢,一起继续学习,就知道怎么做啦。
宝玉和贾琏跟你聊了聊,你发现他们俩的需求并不相同:
- 宝玉说,只要在名单最后加上他的名字就可以,当个小跟班儿;
- 贾琏说想和妻子王熙凤排在一起,直接排在她的后面。
这时候,我们要用两种不同的方法添加他们的姓名了。
首先我们来处理宝玉的要求。将他的话翻译成 Python 世界的语言就是,在列表末尾添加一个元素。
我们可以使用列表自带的 append()
方法实现,把宝玉加到我们的名单里,代码很简单:
students.append('贾宝玉')
# 单词 “append”的字面意思是“附加,增补”,所以 append() 方法会在列表末尾新增一个元素,同时列表长度加一,students 变成了 13 个元素,那么排在名单末尾的宝玉的索引值就是 12(索引从 0 开始,今天的重点哦)。此时我们可以打印出宝玉的名字,验证是否添加成功,可以使用下面的代码:
print(students[12])
宝玉喜笑颜开,向你鞠了个躬,连连感谢老师你的帮助。
接下来,我们再来解决贾琏的要求。将他的话翻译成 Python 世界的语言就是,在列表中间某个位置插入一个元素。
列表自带了 insert()
方法,可以实现这个要求。单词“insert”的意思就是“插入”。
“在列表中间某个位置插入一个元素”,要清楚到底是“哪个位置”,以及“什么元素”。这正是 insert()
方法要求的两个参数的意义——插入的位置(索引值),以及新元素内容。
我们已知,王熙凤排第 9 位,索引为 8
,那贾琏需要排进第 10 的位置,索引为 9
。那就是在索引为 9
的位置上插入元素 '贾琏'
。操作代码要这样写:
students.insert(9, '贾琏')
print(students[9])
# 贾琏
成功了!到此为止,班级里已经成功添加了两位新同学。
要注意的是,排在贾琏之后的元素,都因为 insert()
的操作,被迫向后挪了一个位置,索引值都要加 1。
刚刚宝玉的索引还是 12
,现在又变更了:
print(students.index('贾宝玉'))
# 输出:13
练习题:
一:
最近大家上课都有点不积极,你想着如何让大家听讲得更认真。你决定抽查几个同学的随堂笔记。抽查规则如下:看该同学在 students
名单中是第几个名字,如果排名是奇数,就抽查他的课堂笔记。
现在你挑出林黛玉、史湘云、贾迎春、贾琏四个人,看看他们四个中,谁会被抽查到呢。
接下来,按照下面的步骤,动手写一个抽查程序吧:
- 创建一个
check_notes()
函数,参数为name
,代表学生姓名,作用是判定学生在students
中的排名,如果是奇数,就打印'xxx需要被检查'
; - 调用
check_notes()
函数,对林黛玉、史湘云、贾迎春、贾琏四人进行判断。
提示:你可能会用到求余数的运算,要使用
%
运算符。求 10 除以 3 的余数 x,Python 中写成x = 10 % 3
。
答:
students = [
'林黛玉', '薛宝钗', '贾元春', '贾探春', '史湘云', '妙玉',
'贾迎春', '贾惜春', '王熙凤', '贾琏', '贾巧姐', '李纨', '秦可卿', '贾宝玉'
]
# 定义 check_notes() 函数
def check_notes(name):
# 获取排名
index = students.index(name) + 1
# 判断是否为奇数
if index % 2 == 1:
print(name + '需要被抽查')
# 调用函数,判断四位同学是否会被抽查
check_notes('林黛玉')
check_notes('史湘云')
check_notes('贾迎春')
check_notes('贾琏')
二:
月份列表
今天英语课上,老师教了十二个月份对应的英语单词。贾宝玉为了让自己记住全部的十二个单词,都将他们保存在了列表里。
但是粗心的贾宝玉有些地方写错了,需要聪明的你通过刚刚学到的列表操作帮助他修改一下,具体要求如下:
- 将错写的英文单词 Mach 修正为 March;
- 在七月(July)后添加八月对应的英文单词 August;
- 在列表最后添加十二月对应的英文单词 December;
- 打印出正确的
month
列表
month = [
'January', 'February', 'Mach', 'April', 'May', 'June', 'July', 'September', 'October', 'November'
]
# 将错写的英文单词 Mach 修正为 March;
march = month.index('Mach')
month[march] = 'March'
# 在七月(July)后添加八月对应的英文单词 August;
addAugust = month.index('July')
month.insert(addAugust,'August')
# 在列表最后添加十二月对应的英文单词 December;
month.append('December')
# 打印出正确的 month 列表
print(month)
三:
贾宝玉不满足前面好不容易写好的十二月份单词列表。他还想自己制作一个月份翻译器。他希望编写一个函数,自己输入一个月份对应的英文单词,函数就可以输出对应的月份中文,如“一月”。
接下来,我们按照下面的步骤完成这个函数吧:
- 创建一个
translate()
函数,参数为word
,代表输入的单词; translate()
函数作用是打印输入月份单词的翻译,比如输入 January 则打印出一月。
提示:可以创建一个列表保存翻译内容,位置和英文单词一一对应,这样就可以通过位置来查询翻译结果。
month = [
'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'
]
monthChinese = [
'一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'
]
def translate(word):
index = month.index(word)
print(monthChinese[index])
translate('January')
下一篇:列表的进阶