python的初识列表

首先要认识列表的格式

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 名单中是第几个名字,如果排名是奇数,就抽查他的课堂笔记。

现在你挑出林黛玉、史湘云、贾迎春、贾琏四个人,看看他们四个中,谁会被抽查到呢。

接下来,按照下面的步骤,动手写一个抽查程序吧:

  1. 创建一个 check_notes() 函数,参数为 name,代表学生姓名,作用是判定学生在 students 中的排名,如果是奇数,就打印 'xxx需要被检查'
  2. 调用 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('贾琏')

二:

月份列表

今天英语课上,老师教了十二个月份对应的英语单词。贾宝玉为了让自己记住全部的十二个单词,都将他们保存在了列表里。

但是粗心的贾宝玉有些地方写错了,需要聪明的你通过刚刚学到的列表操作帮助他修改一下,具体要求如下:

  1. 将错写的英文单词 Mach 修正为 March;
  2. 在七月(July)后添加八月对应的英文单词 August;
  3. 在列表最后添加十二月对应的英文单词 December;
  4. 打印出正确的 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)


三:

贾宝玉不满足前面好不容易写好的十二月份单词列表。他还想自己制作一个月份翻译器。他希望编写一个函数,自己输入一个月份对应的英文单词,函数就可以输出对应的月份中文,如“一月”。

接下来,我们按照下面的步骤完成这个函数吧:

  1. 创建一个 translate() 函数,参数为 word,代表输入的单词;
  2. 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')

下一篇:列表的进阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值