第1关:列表元素的增删改:客人名单的变化
下面以一则请客的故事来说明列表元素操作的应用场景:
有个人邀请几个朋友吃饭,初步拟定了一个客人名单列表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']
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)
输出结果为:
Python 也提供了insert()方法,可以在列表任意指定位置插入元素,其基本语法为:
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:待元素的新值。
例如,将请客名单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函数能够删除指定索引位置的元素,其基本语法如下:
source_list:待修改的列表;
index:待删除元素的位置索引。
例如,将请客名单guests列表中的Zhang san删除,则相应的语句为:
# 初始化guests列表
guests=['Zhang san','Li si','Wang wu','Zhao liu']
# 将列表中的`Zhang san`删除
del guests[0]
# 输出新的guests列表
print(guests)
输出结果为:
Python 还提供了pop()方法来删除元素,该方法将从源列表删除对应元素,同时返回被删除的元素。其基本语法如下:
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:待修改的列表;
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)
输出结果为:
step 1:将guests列表末尾的元素删除,并将这个被删除的元素值保存到deleted_guest变量;
step 2:将deleted_guest插入到 step 1 删除后的guests列表索引位置为2的地方;
step 3:将 step 2 处理后的guests列表索引位置为1的元素删除;
打印输出 step 1 的deleted_guest变量;
打印输出 step 3 改变后的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
tan qi
hu ba
预期输出:
hu ba
['zhang san', 'hu ba', 'wang wu', 'tan qi']
开始你的任务吧,祝你成功!
第2关:列表元素的排序:给客人排序
['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: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 编程——从入门到实践》第三章。
# 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
wang wu
tan qi
hu ba
预期输出:
第3关:数值列表:用数字说话
data_set = [2,4,6,8,10]
sum=30
相关知识
本关可以利用range()、list()、sum()等函数方法来实现我们的目标。
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()插入功能创建一个列表。例如,我们要创建一个包含10个0~9整数的平方的列表:
# 声明一个列表变量
numbers = []
# 利用append()函数和range()函数向列表插入目标元素
for i in range(10):
number = i2
numbers.append(number)
print(numbers)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
使用list()函数和range()函数创建数字列表
我们可以利用list()函数将range()生成的系列数字直接转为列表,这时range()函数的返回值将会作为list()函数的参数,输出为一个数字列表。其基本使用语法如下:
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 编程——从入门到实践》第三章。
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的样例测试集:
测试输入:
25
90
4
预期输出:
17
64
开始你的任务吧,祝你成功!
第4关:列表切片:你的菜单和我的菜单
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:])
输出结果:
利用切片方法从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']
开始你的任务吧,祝你成功!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/15643.html