第1关:列表增删改:客人名单的变化
200
- 任务要求
- 参考答案
- 评论75
任务描述
列表是由按一定顺序排列的元素组成,其中的元素根据需要可能会发生变化。其中,列表元素的添加、删除或修改等是最常见的操作。下面以一则请客的故事来说明列表元素操作的应用场景。
有个人邀请几个朋友吃饭,初步拟定了一个客人名单列表guests=['Zhang san','Li si','Wang wu','Zhao liu']
。后面因为一些临时情况,这个客人名单不断变化:
-
Zhao liu
说要带他的朋友Hu qi
一起来。 -
Zhang san
因临时有事不能来了。 -
Wang wu
说由他的弟弟Wang shi
代他赴宴。
最终的客人名单列表如下:
['Li si','Wang shi','Zhao liu','Hu qi']
本关要求对一个给定的列表进行增、删、改等操作,并输出变化后的最终列表。
相关知识
Python
为列表类型提供了一系列内置操作,包括append()
、insert()
、pop()
、remove()
等函数,能够很方便的处理上述列表元素变化的情况。
我们以上述客人名单列表为例介绍这几种列表操作方法。
添加列表元素
Python
提供了append()
和insert()
等函数,实现向一个列表增加新元素的功能。
(1). 在列表尾部添加元素 在Python
中,可以使用append()
方法向一个列表的尾部追加一个元素,其基本语法如下:
source_list.append(obj)
其中,
source_list
:为待修改的列表obj
:为待插入的元素
例如,要向guests
列表尾部增加客人Hu qi
,相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 向guests列表尾部追加一个名为Hu qi的客人
guests.append('Hu qi')
# 输出新的guests列表
print(guests)
输出结果为: ['Zhang san','Li si','Wang wu','Zhao liu','Hu qi']
(2). 在列表指定位置添加元素
Python
也提供了insert()
方法,可以在列表任意指定位置插入元素,其基本语法为:
source_list.insert(index,obj)
其中,
source_list
:为待修改的列表index
:为待插入的位置索引obj
:为待插入的元素
注意:在Python中,列表起始元素的位置索引为0
例如,要向guests
列表中Zhang san
的后面增加客人Hu qi
,则相应的语句为:
# 创建并初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 向guests列表Zhang san后面增加一个名为Hu qi的客人
guests.insert(1,'Hu qi')
# 输出新的guests列表
print(guests)
输出结果为: ['Zhang san','Hu qi','Li si','Wang wu','Zhao liu']
修改列表元素
Python
中修改列表元素的方法为,直接将列表中要修改的元素索引指出,然后为其指定新值。其基本语法如下:
source_list[index] = obj
其中,
source_list
:为待修改的列表index
:为待修改元素的位置索引obj
:为待元素的新值
例如,将请客名单guests
列表中的Wang wu
改为Wang shi
。 ,则相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 将列表中的`Wang wu`改为`Wang shi`
guests[2] = 'Wang shi'
# 输出新的guests列表
print(guests)
输出结果为: ['Zhang san','Li si','Wang shi','Zhao liu']
删除列表元素
Python提供了多种不同的方法来实现对列表中元素的删除操作,包括根据元素索引位置或者元素值删除元素的方法。
(1). 删除指定位置的元素
del方法
在Python中,调用del
函数能够删除指定索引位置的元素,其基本语法如下:
del source_list[index]
其中,
source_list
:为待修改的列表index
:为待删除元素的位置索引
例如,将请客名单guests
列表中的Zhang san
删除。 ,则相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 将列表中的`Zhang san`删除
del guests[0]
# 输出新的guests列表
print(guests)
输出结果为: ['Li si','Wang wu','Zhao liu']
pop方法 Python
还提供了pop()
方法来删除元素,该方法将从源列表删除对应元素,同时返回被删除的元素。其基本语法如下:
deleted_obj = source_list.pop(index)
其中,
deleted_obj
:为保存被删除元素的变量,可根据需要自由命名source_list
:为待修改的列表index
:为待删除元素的位置索引
注意:index参数为可选项,不填则默认删除列表末尾的元素
例如,将请客名单guests
列表中的Zhang san
删除。 ,则相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 将列表中的`Zhang san`删除
deleted_obj = guests.pop(0)
# 输出被删除的元素以及删除后的guests列表
print(deleted_obj)
print(guests)
输出结果为: Zhang san
['Li si','Wang wu','Zhao liu']
(2). 删除指定值对应的元素 有些时候我们并不知道要删除元素的位置索引,怎么办呢?别着急,Python还提供了remove()
方法,可以直接通过元素值来删除对应的元素。其基本语法如下:
source_list.remove(obj)
其中,
source_list
为待修改的列表obj
为待删除元素的值
注意:如果列表中有多个值为obj的元素,remove仅删除位置索引最靠前的那个元素
例如,将请客名单guests
列表中的Zhang san
删除。 ,则相应的语句为:
# 初始化guests列表,列表中有多个名为Zhang san的客人
guests=['Zhang san','Li si','Wang wu','Zhao liu','Zhang san']
# 将列表中的`Zhang san`删除
guests.remove('Zhang san')
# 输出新的guests列表
print(guests)
输出结果为:
`['Li si','Wang wu','Zhao liu','Zhang san']`
如果您想了解更多有关列表操作知识,请参考:【美】Eric Matthes著《Python编程——从入门到实践》第三章
。
编程要求
本关的编程任务是补全src/Step1/guests.py
文件的代码,实现相应的功能。具体要求如下:
-
step1:将
guests
列表末尾的元素删除,并将这个被删除的元素值保存到deleted_guest
变量; -
step2:将
deleted_guest
插入到step1删除后的guests
列表索引位置为2
的地方; -
step3: 将step2处理后的
guests
列表索引位置为1
的元素删除。 -
打印输出step1的
deleted_guest
变量; -
打印输出step3改变后的
guests
列表。
本关涉及的代码文件src/Step1/guests.py
的代码框架如下:
# coding=utf-8
# 创建并初始化Guests列表
guests = []
while True:
try:
guest = input()
guests.append(guest)
except:
break
# 请在此添加代码,对guests列表进行插入、删除等操作
###### Begin ######
####### End #######
测试说明
本关的测试文件是src/Step1/guests.py
,测试过程如下:
- 平台自动编译并运行
guests.py
,并以标准输入方式提供测试输入; - 平台获取程序输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/Step1/guests.py
的样例测试集:
测试输入: zhang san
li si
wang wu
hu qi
liu ba
预期输出: liu ba
['zhang san', 'liu ba', 'wang wu', 'hu qi']
测试输入: yu yong
gu chao
zeng qi
预期输出: zeng qi
['yu yong', 'zeng qi']
开始你的任务吧,祝你成功!
如果你觉得这一关的内容对你有帮助,请你在下面点赞。
积极的人像太阳照到哪里哪里亮,消极的人像月亮初一十五不一样。
# coding=utf-8
# 创建并初始化Guests列表
guests = []
while True:
try:
guest = input()
guests.append(guest)
except:
break
# 请在此添加代码,对guests列表进行插入、删除等操作
###### Begin ######
x=guests.pop()
guests.insert(2,x)
guests.pop(1)
print(x)
print(guests)
####### End #######
第2关:排序:给客人排序
100
- 任务要求
- 参考答案
- 评论75
任务描述
一般情况下我们创建的列表中的元素可能都是无序的,但有些时候我们需要对列表元素进行排序。
例如,对参加会议的专家名单,我们需要根据专家姓名按照首字母从小到大或者从大到小的顺序进行排序。例如我们想将如下的客人guests列表中的五个名字元素['zhang san','li si','wang wu','sun qi','qian ba']
分别按照首字母从小到大的顺序和从大到小的顺序分别排序。排序后的输出分别为:
['li si','qian ba','sun qi','wang wu','zhang san']
['zhang san','wang wu','sun qi','qian ba','li si']
本关要求就是学会列表排序相关操作的使用方法,实现对列表元素的排序。
相关知识
Python
针对列表数据结构内置提供了sort()
方法,实现对列表元素的排序功能。其基本语法如下:
source_list.sort(reverse=True)
其中,
source_list
:待排序的列表;sort
:列表排序函数的语法关键词;reverse
:sort
函数的可选参数,如果设置其值为True
,则进行反向从大到小排序,如果设置为False
或者不填写该参数,则默认进行正向从小到大排序。
例如,给定一个客人列表guests
, 我们对其按照字母排序如下:
guests = ['zhang san','li si','wang wu','sun qi','qian ba']
guests.sort()
print(guests)
guests.sort(reverse=True)
print(guests)
程序输出结果:
['li si','qian ba','sun qi','wang wu','zhang san']
['zhang san','wang wu','sun qi','qian ba','li si']
-
注意,
sort
函数会直接作用于待排序的列表并修改其排序 -
如果您想了解更多有关列表操作知识,请参考:
【美】Eric Matthes著《Python编程——从入门到实践》第三章
。
编程要求
本关的编程任务是补全src/step2/sortTest.py
文件中的函数部分,要求实现对输入列表source_list
中的元素按照首字母从小到大的顺序进行排序,并且输出排序后的列表。
本关涉及的代码文件src/step2/sortTest.py
的代码框架如下:
#coding=utf-8
# 创建并初始化`source_list`列表
source_list = []
while True:
try:
list_element = input()
source_list.append(list_element)
except:
break
# 请在此添加代码,对guests列表进行排序等操作并打印输出排序后的列表
#********** Begin *********#
#********** End **********#
评测说明
本关的测试文件是src/Step2/sortTest.py
,测试过程如下:
- 平台自动编译并运行
sortTest.py
,并以标准输入方式提供测试输入; - 平台获取程序输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/Step2/sortTest.py
的样例测试集:
测试输入: zhang san
li si
hu ba
预期输出: ['hu ba', 'li si', 'zhang san']
测试输入: wang qing
liu ming
bai zong
预期输出: ['bai zong', 'liu ming', 'wang qing']
开始你的任务吧,祝你成功!
一帆风顺固然值得羡慕,但那天赐的幸运不可多得,可遇而不可求。
#coding=utf-8
# 创建并初始化`source_list`列表
source_list = []
while True:
try:
list_element = input()
source_list.append(list_element)
except:
break
# 请在此添加代码,对source_list列表进行排序等操作并打印输出排序后的列表
#********** Begin *********#
source_list.sort()
print(source_list)
#********** End **********#
第3关:数值列表:用数字说话
300
- 任务要求
- 参考答案
- 评论75
任务描述
在数据可视化的背景下,数字列表在Python
列表中的应用十分广泛,列表十分适合存储数字集合。本关目标是让读者掌握一些处理数字列表的基本方法,主要包括数字列表的创建、对数字列表进行简单的统计运算等。
例如我们要创建一个从2
到10
的偶数的数字集合,然后计算出该集合的数值之和。
data_set = [2,4,6,8,10]
sum=30
本关要求能够利用合适方法快速创建数字列表,并能够对列表中的元素数值进行简单的统计运算。
相关知识
本关可以利用range()
、list()
、sum()
等函数方法实现我们的目标。
range()
函数
Python提供了range()
函数,能够用来生成一系列连续增加的数字,其基本使用语法有如下三种:
range(lower_limit,upper_limit,step)
其中,
-
lower_limit
:生成系列整数的下限整数,不填该参数则默认为从0
开始。生成的整数从此数开始,包括该数。 -
upper_limit
:生成系列整数的上限整数,必填参数。生成的整数要小于该上限。 -
step
:在下限和上限之间生成系列整数之间的间隔步长,不填该参数则默认步长为1
-
注意,
range()
函数的三个参数都只能为整数。如果range
函数中仅一个参数,则该参数表示upper_limit
;如果仅两个参数,则分别表示lower_limit
和upper_limit
。
例如,要生成1~6
之间步长为2的系列整数:
for i in range(1,6,2):
print(i)
输出结果:
1
3
5
基于range()
函数创建数字列表
我们可以通过range()
函数,利用Python列表提供的append()
插入功能创建一个列表。
例如,我们要创建一个包含0~9
10个整数的平方的列表:
# 声明一个列表变量
numbers = []
# 利用append()函数和range()函数向列表插入目标元素
for i in range(10):
number = i**2
numbers.append(number)
print(numbers)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
使用list()
函数和range()
函数创建数字列表
我们可以利用list()
函数将range()
生成的系列数字直接转为列表,这时候range()
函数的返回值将会作为list()
函数的参数,输出为一个数字列表。其基本使用语法如下:
data_list = list(range(lower_limit,upper_limit,step))
其中,
list
:列表函数的语法关键词range
:函数语法关键词data_list
:最终生成的列表变量
例如,我们要生成并输出1~5的数字列表:
data_list = list(range(1,6))
print(data_list)
输出结果: [1,2,3,4,5]
对数字列表进行简单的统计运算
Python中有一些专门处理数字列表简单的统计运算的函数,利用这些函数可以轻松找到数字列表的最小值、最大值和总和等一系列统计运算。其基本语法如下:
min_value = min(data_list)
max_value = max(data_list)
sum_value = sum(data_list)
其中,
min
:数字列表求最小值的语法关键字max
:数字列表求最大值的语法关键字sum
:数字列表求和的语法关键字
具体使用示例如下:
numbers = [2,4,11,1,21,32,5,8]
print('The min number is',min(numbers))
print('The max number is',max(numbers))
print('The sum is',sum(numbers))
输出结果:
The min number is 1
The max number is 32
The sum is 84
如果您想了解更多有关列表操作知识,请参考:
【美】Eric Matthes著《Python编程——从入门到实践》第三章
。
编程要求
编程任务是补全src/Step3/numbers_square.py
文件的代码内容,实现如下功能:
- step1:根据给定的下限数
lower
, 上限数upper
以及步长step
,利用range函数生成一个列表 - step2:计算该列表的长度
- step3:求该列表中的最大元素与最小元素之差
本关的代码文件src/Step3/numbers_square.py
的代码框架如下:
#coding=utf-8
# 创建并读入range函数的相应参数
lower = int(input())
upper = int(input())
step = int(input())
# 请在此添加代码,实现编程要求
###### Begin ######
####### End #######
评测说明
本关的测试文件是src/Step3/numbers_square.py
,测试过程如下:
- 平台自动编译并运行
numbers_square.py
,并以标准输入方式提供测试输入; - 平台获取程序输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/Step3/numbers_square.py
的样例测试集:
测试输入: 2
8
1
预期输出: 6
5
测试输入: 0
10
3
预期输出: 4
9
开始你的任务吧,祝你成功!
人生的关键在于思想精神和心情,努力让自己的思想明澈,让自己的精神充实而有所支撑,让自己每天都有一个害达平和开朗的心情,这很重要
#coding=utf-8
# 创建并读入range函数的相应参数
lower = int(input())
upper = int(input())
step = int(input())
# 请在此添加代码,实现编程要求
###### Begin ######
numbers=[]
x=0
for i in range(lower,upper,step):
number=i
numbers.append(number)
x+=1
min_numbers=min(numbers)
max_numbers=max(numbers)
cha=max(numbers)-min(numbers)
print(x)
print(cha)
####### End #######
第4关:列表切片:你的菜单和我的菜单
300
- 任务要求
- 参考答案
- 评论75
任务描述
我们在前三关中学习了如何处理单个列表元素和所有列表元素,在这一关中我们还将学习如何处理部分列表元素——Python
中称为切片。
例如,当我们去餐馆吃饭点菜时,你的菜单和我的菜单有些时候是一模一样,也有些时候是部分菜名一样。那么如何根据我已经点好的菜单生成你的菜单呢?
本关通过菜名列表的部分复制,让读者了解并掌握列表切片的基础知识。
相关知识
Python
切片是对一个列表取其部分元素获得一个子序列的常见操作,切片操作的返回结果类型与被切片的对象一致。要创建一个已有列表的切片,通过指定切片的第一个列表元素和最后一个列表元素的索引号即可。其基本语法如下:
list_slice = source_list[start:end:step]
其中,
-
source_list
:被切片的源列表 -
list_slice
:切片后生成的子序列列表 -
start
:切片起始索引位置,省略则从头开始 -
end
:切片结束索引位置,省略则切至列表末尾 -
step
:切片步长,可选参数,表示每N
个元素取一个,默认为1 -
注意:切片和
range()
函数一样,Python会自动到达所指定切片结束索引位置的前面一个元素停止。
例如,下面是我已经点好的菜名列表,现在朋友点的菜单中包含我的前三个菜名,输出朋友的菜单:
my_menu = ['fish','pork','pizza','carrot']
print(my_menu[1:4:2])
print(my_menu[:3])
print(my_menu[2:])
输出结果: ['pork','carrot']
['fish','pork','pizza']
['pizza','carrot']
负数索引返回离列表末尾相应间隔的元素。列表末尾元素的索引是从-1
开始的。
例如,朋友的菜单是包含我的菜单最后3个菜名:
my_menu=['fish','pork','pizza','carrot']
print(my_menu[-3:])
输出结果: ['pork','pizza','carrot']
如果您想了解更多有关列表操作知识,请参考:【美】Eric Matthes著《Python编程——从入门到实践》第四章
。
编程要求
本关的编程任务是补全src/Step4/foods.py
文件的代码内容,实现如下功能:
- 利用切片方法从my_menu列表中每
3
个元素取1
个,组成子序列并打印输出; - 利用切片方法获取my_menu列表的最后三个元素组成子序列并打印输出。
本关涉及的代码文件src/Step4/foods.py
的代码框架如下:
# coding=utf-8
# 创建并初始化my_munu列表
my_menu = []
while True:
try:
food = input()
my_menu.append(food)
except:
break
# 请在此添加代码,对my_menu列表进行切片操作
###### Begin ######
####### End #######
评测说明
本关的测试文件是src/Step4/foods.py
,测试过程如下:
- 平台自动编译并运行
foods.py
,并以标准输入方式提供测试输入; - 平台获取程序输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/Step4/foods.py
的样例测试集:
测试输入: pizza
chicken
carrot
apple
banana
预期输出: ['pizza','apple']
['carrot','apple','banana']
测试输入: tomato
eggplant
beet
预期输出: ['tomato']
['tomato','eggplant','beet']
开始你的任务吧,祝你成功!
在希望与失望的决斗中,如果你用勇气与坚决的双手紧握着,胜利必属于希望。
# coding=utf-8
# 创建并初始化my_menu列表
my_menu = []
while True:
try:
food = input()
my_menu.append(food)
except:
break
# 请在此添加代码,对my_menu列表进行切片操作
###### Begin ######
print(my_menu[0::3])
print(my_menu[-3:])
####### End #######