python实训课记录——(2)list列表相关练习

本文介绍了Python中处理列表的一系列基础操作,如使用split函数拆分字符串成列表,利用append、insert添加元素,del和remove删除元素,以及pop方法移除列表项。此外,还讨论了len函数计算列表长度和切片操作在列表管理中的应用。这些概念和操作是Python编程中处理数据的基础。
摘要由CSDN通过智能技术生成

以下题目来自于牛客网:​python入门练习

题目1:NP16 发送offer

1. 源码及注释
1.	import sys
2.	# 为已通过面试的人员创建offer list
3.	offer_lists = ['Allen', 'Tom']  

4.	# 利用for循环,向通过面试的人员发送通知信息
5.	for i in offer_lists:
6.	    print('%s, you have passed our interview and will soon become a member of our company.' %i)

7.	# 由于Tom没有及时确认offer,offer名单中Tom被替换为Andy
8.	offer_lists.remove('Tom')
9.	Candidate = 'Andy'
10.	offer_lists.append(Candidate)

11.	# 利用for循环,对已确认offer的人员进行欢迎员工通知
12.	for m in offer_lists:
13.	    print('%s, welcome to join us!' %m)


2.拓展延伸

在第8行代码处,可以构造一个candidate list用于存放候选人列表,由于本题只有一个候选人,所以没有构造列表,通过candidate list可以很好地将没有确认offer的人员删除offer list,然后将candidate list中的人员加入。

题目2:NL17 生成列表

1. 源码及注释
1.	import sys
2.	name_str = input()  # 用于存放输入的原始字符串
3.	name_list = name_str.split()  # 将字符串按照空格拆分为列表
4.	print(name_list)  # 输出拆分后的列表结果
2.拓展延伸

使用split()函数,可以将字符串按照特定的字符拆分成列表。split() 方法语法:str.split(str=“”, num=string.count(str)),其中,str 为分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等;num为分割次数。默认为 -1, 即分隔所有。常见的除了按照空字符进行拆分之外,还可以在split()函数的括号内自定义字符,例如“|”,“和”等等。

题目3:NL18 生成数字列表

1. 源码及注释
1.	from operator import le
2.	import sys

3.	num_str = input()  # 用num_str来接收输入
4.	num_list = num_str.split()  # 利用split()按照空格分割,并存入列表中

5.	# 注意:如果直接用print输出num_list是不正确的,会得到如下结果:
6.	# ['1', '2', '3', '4', '5']
7.	# 应该利用for循环j转换为整形输出

8.	for i in range(0, len(num_list)):
9.	    num_list[i] = int(num_list[i])
10.	    
11.	print(num_list)

2.拓展延伸

与上一题类似,本题也需要利用split()函数对输入的字符串进行分割,但需要注意的是,直接输出分割后的列表是不正确的,应该转换为整型再输出

题目4:NL19 列表的长度

1. 源码及注释
1.	import sys

2.	name_str = input()  # 输入
3.	name_list = name_str.split()  # 按照空格分割字符串返回列表
4.	length = len(name_list)  # 利用len()函数求出列表长度
5.	print(length)  # 输出列表长度
2.拓展延伸

在本题中利用len()函数可以很好地得到列表的长度。len函数返回序列类型对象(字符或字符串、元组、列表和字典等)的项目个数(长度),语法:len(object),函数返回一个大于0的int型整数,表示对象的项目个数。但需要注意的是:1)当参数是字典时,len函数返回的是字典中的键值对数量;2)当参数是非序列对象时,Python会报错。

题目5:NP20 增加排队名单(一)

1. 源码及注释
list1 = input().split(" ")#输入字符串
list1.append('Allen')#运用append方法在列表尾部添加Allen
print(list1)#打印输出列表
2.拓展延伸

本题运用了append方法,在当前列表尾部追加元素,原地修改列表,速度快
使用append方法时,要注意仅能用于列表对象,不能用于其他类型的序列数据类型,并且它只能添加一个元素,如果要添加多个元素,需要多次调用该方法。同时注意它会修改原列表。

题目6:NP21 增加派对名单(二)

1. 源码及注释
list1 = input().split(" ")  # 输入字符串
list1.insert(0, "Allen")  # 运用insert将Allen插入到列表的第一个元素
print(list1)  # 打印输出结果
2.拓展延伸

本题运用了insert方法,在当前列表第一位直接添加元素。
注意事项:该方法仅能用于列表对象;若参数为负数时,表示从列表末尾开始计算索引;会修改原列表。

题目7:NP22 删除简历

1. 源码及注释
list1 = input().split(" ")  # 输入字符串
del list1[0]  # 运用del将表中的第一个元素删除
print(list1)  # 打印输出结果
2.拓展延伸

本题使用了del方法,将指定位置的元素删除。
注意事项:参数为负数时,表示从列表末尾开始计算索引;会修改原列表。

题目8:NP23 删除好友

1. 源码及注释
list1 = input().split(" ")#输入字符串

str1 = input("")#输入要从列表中删除的元素
for i in list1[::]:      #切片形成一个新的临时列表
    if i == str1:        #因此,删除原列表不会影响这个临时列表
        list1.remove(i)  #运用remove方法将指定的元素删除
print(list1)#打印输出结果
2.拓展延伸

本题使用了remove方法,将指定的元素从列表中删除。运用切片的方法防止列表中出现连续的指定删除元素时输出错误
注意事项:remove方法只会删除列表中出现的第一个指定元素;可以运用循环来删除具有多个元素的列表。

题目9:NP24 淘汰排名最后的学生

1. 源码及注释
#将输入的多个字符串通过split()转换成列表
list1=input().split()
#通过for循环弹出列表中末3位的元素
for i in range(3):
#pop()默认值为-1,即指向列尾
    list1.pop()
print(list1)
#Pop的使用方法lst.pop([index])  删除并返回列表lst中下标为index(默认为-1)的元素

2.拓展延伸
#将输入的多个字符串通过split()转换成列表
list1=input().split()
#使用切片截取列表的最后3个元素并删除
del list1[-3:]
#也可以写成list1[-3:]=[]
print(list1)

切片适用于列表、元组、字符串、range对象等类型,但作用于列表时功能最强大。可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。
切片使用2个冒号分隔的3个数字来完成:

  1. 第一个数字表示切片开始位置(默认为0)。
  2. 第二个数字表示切片截止(但不包含)位置(默认为列表长度)。
  3. 第三个数字表示切片的步长(默认为1),当步长省略时可以顺便省略最后一个冒号。

题目10:NP25有序表的长度

1. 源码及注释
1.	my_list=['P','y','t','h','o','n']
2.	#使用sorted函数对列表进行排序,默认为升序即默认reverse=False
3.	print(sorted(my_list))
4.	print(my_list)
5.	#将reverse=True,改为降序
6.	print(sorted(my_list,reverse=True))
2.拓展延伸

sorted(iterable, cmp=None, key=None, reverse=False)
一共可接受4个参数,含义分别如下:

  1. 可迭代类型,例如字典、列表
  2. 比较函数
  3. 可迭代类型中某个属性,对给定元素的每一项进行排序
  4. 降序或升序
    在本题中只用到了reverse=True,将升序改为降序

题目11:NP26 牛牛的反转列表

1. 源码及注释
1.	num = [3, 5, 9, 0, 1, 9, 0, 3]
2.	#使用reverse()将列表反转
3.	num.reverse() 
4.	print(num)
5.	#reversed(sequence, /),返回sequence中所有元素逆序后组成的迭代器对象
2.拓展延伸
1.	num = [3, 5, 9, 0, 1, 9, 0, 3]
2.	#使用切片将列表逆序
3.	print(num[::-1])

题目12:NP27 朋友们的喜好

1. 源码及注释
1.	name = ['Niumei', 'YOLO', 'Niu Ke Le', 'Mona'] 
2.	food =  ['pizza', 'fish', 'potato', 'beef']
3.	num =  [3, 6, 0, 3]
4.	#创建空列表friend
5.	friend=[]
6.	#利用append()将将元素添加至列表lst尾部
7.	friend.append(name)
8.	friend.append(food)
9.	friend.append(num)
10.	#三个元素分别是三个列表,组成了一个二维数组
11.	print(friend)
2.拓展延伸
1.	name = ['Niumei', 'YOLO', 'Niu Ke Le', 'Mona'] 
2.	food =  ['pizza', 'fish', 'potato', 'beef']
3.	num =  [3, 6, 0, 3]
4.	#创建空列表friend
5.	friend=[]
6.	#通过切片的方式在尾部追加元素
7.	friend[len(friend):]=[name]
8.	friend[len(friend):]=[food]
9.	friend[len(friend):]=[num]
10.	print(friend)

题目13:NL28 密码游戏

1. 源码及注释
a=int(input())
#输入
#获取每一位的值
x=a//1000#千位
c=(a-x*1000)//100#百位
d=(a-x*1000-c*100)//10#十位
e=a-x*1000-c*100-d*10#个位
#破解密码
x=(x+3)%9
c=(c+3)%9
d=(d+3)%9
e=(e+3)%9
    
#交换第1位和第3位数字
f=x
x=d
d=f
#交换第2位和第4位数字
f=c
c=e
e=f
#输出
print(x,c,d,e,sep='')

2.拓展延伸

题目解析:本题首先输入一个四位数的整数,使用了input输入,然后通过除法将输入整数的每一位分离,接着按照题目要求的破解方案对密码进行转换,转换就是正常的加和除操作,转换完之后将第1位和第3位数字交换,第2位和第4位数字交换。交换后输出。
遇到错误及解决办法:我遇到了一些问题。首先不会输入,查询资料后学会。最后,是缩进问题,把缩进去掉后解决。

题目14:NL29 用列表实现栈

1. 源码及注释
stack=[1,2,3,4,5]
#弹出列表末尾元素
stack.pop()
print(stack)
#弹出列表末尾元素
stack.pop()
print(stack)
#输入
a=int(input())
#在列表末尾插入元素
stack.append(a)
print(stack)
2.拓展延伸

本题主要就是对pop函数和append函数的考察。本题用列表实现栈,先弹出两个列表末尾的元素,然后再在列表末尾添加一个元素。弹出元素使用pop函数,pop函数可以弹出列表指定位置的元素,默认情况下弹出列表末尾的元素。append函数可以在列表末尾插入一个元素。

题目15:NL 用列表实现队列

1. 源码及注释
queue = [1, 2, 3, 4, 5]
# 弹出列表第一个元素
queue.pop(0)
print(queue)
# 弹出列表第一个元素
queue.pop(0)
print(queue)
# 输入
a = int(input())
# 在列表末尾插入元素
queue.append(a)
print(queue)
2.拓展延伸

本题主要就是对pop函数和append函数的考察。本题用列表实现队列,先弹出两个列表对首的元素,然后再在列表末尾添加一个元素。弹出元素使用pop函数,pop函数可以弹出列表指定位置的元素,默认情况下弹出列表末尾的元素,pop函数弹出数字在列表中的位置在pop函数后面的()中。append函数可以在列表末尾插入一个元素。

题目16:NL团队分组

1. 源码及注释
group_list=['Tom','Allen','Jane','William','Tony']
#输出列表group_list的前两个元素
print(group_list[0:2:1])
#输出列表group_list的中间三个元素
print(group_list[1:4:1])
#输出列表group_list的后两个元素
print(group_list[3:5:1])
2.拓展延伸

本题主要考察了切片的用法。题目要求使用print()语句和切片来打印列表group_list的前两个元素表示去做第一个任务的人的名字,再使用print()语句和切片来打印列表group_list的中间三个元素表示去做第二个任务的人的名字,再使用print()语句和切片来打印列表group_list的后两个元素表示去做第三个任务的人的名字。都需要切片和输出。切片第一个数字表示起始元素位置,第二个元素表示末尾元素位置,位置前闭后开,最后一个数字表示切片的步长。切片后输出。

完结撒花★,°:.☆( ̄▽ ̄)/$:*.°★

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值