python用sort排序从最后一个元素判断去重_Python实战10-19例:列表、字典、循环等综合训练...

笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 原创文章转载请注明出处。如果喜欢请点赞+关注,感谢支持!

《Python实战系列》所有实例训练题都是从Python各个知识点精挑细选出来的,希望能对大家有所帮助。

Python实战系列每周不定时更新,想看上一期实战训练的朋友请点击=>传送门。不多废话,直接上干货!

目录

10.删除列表元素

11.修改列表

12.判断可变和不可变的数据类型

13.元素去重和删除

14.数据类型转换字典

15.利用判断计算价格

16.判断是否为闰年

17.求数字最大值

18.使用for打印九九乘法表

19.循环删除元素

Python实战10-19例:列表、字典、循环等综合训练

10.删除列表元素

删除列表中的"不明飞行物",写出 2 种或以上方法:

info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]

#方法1 pop()

info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]

print('打印原先列表:\n',info)

info.pop(3)

print('方法1 利用pop()函数删除,删除后的列表内容:\n',info)

#方法2 remove()

info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]

info.remove('不明飞行物')

print('方法2 利用remove()函数删除,删除后的列表内容:\n',info)

#方法3 del语句

info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]

del info[3]

print('方法3 利用del语句,删除后的列表内容:\n',info)

#方法4 列表分片

info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]

info1 = info[:3]

info2 = info[4:]

print('方法4 利用列表重新拼接,不包括要删除的元素,删除后的列表内容:\n',info1 + info2)

打印原先列表:

['Carter', 45, '男', '不明飞行物', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']

方法1 利用pop()函数删除,删除后的列表内容:

['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']

方法2 利用remove()函数删除,删除后的列表内容:

['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']

方法3 利用del语句,删除后的列表内容:

['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']

方法4 利用列表重新拼接,不包括要删除的元素,删除后的列表内容:

['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']

注意,删除元素轻易不要用del语句去删除,太危险。

11.修改列表

现在有一个列表 li2=[1,2,3,4,5]。请通过相关的操作改成li2 = [0,1,2,3,66,4,5,11,22,33]。

#方法1 赋值

li2 = [1,2,3,4,5]

print('原始li2列表内容:',li2)

li3 = [0,1,2,3,66,4,5,11,22,33]

li2 = li3[::]

print('方法1 通过最简单的赋值来进行修改,修改后的li2列表内容:\n',li2)

#方法2 利用insert()

li2 = [1,2,3,4,5]

li2.insert(0,0)

li2.insert(4,66)

li2.insert(7,11)

li2.insert(8,22)

li2.insert(9,33)

print('方法2 只通过insert()添加元素,修改后的li2列表内容:\n',li2)

#方法3,insert(),append()

li2 = [1,2,3,4,5]

li2.insert(0,0)

li2.insert(4,66)

li2.append(11)

li2.append(22)

li2.append(33)

print('方法3 通过insert()和append()添加元素,修改后的li2列表内容:\n',li2)

主要考察对列表的添加元素操作,根据具体的需求选择合适的方法。

12.判断可变和不可变的数据类型

请指出下面那些为可变类型的数据,那些为不可变类型的数据

1、 (11)

2、 {11,22}

3、 ([11,22,33])

4、 {"aa":111}

print('''分析:(11)是整形,而整形是不可变的数据

{11,22}是集合,可以使用add()函数对集合进行添加元素的操作,所以是可变的数据。

([11,22,33])是个陷阱,虽然()是元组的表示方式,但当元组只有一个元素时且后面没有用逗号隔开时,只能表示元素本身的数据类型。也就是列表类型。而列表是可变类型,所以这个也是可变类型。

{"aa":111}是字典,字典是可变的类型,所以得出结论。''')

print('总结:编号为1的是不可变类型的数据;编号为2、3、4的是可变的类型数据。')

各种陷阱,基础知识点。如果不确定可以打印出数据类型,再进行判断是否为可变数据类型。

13.元素去重和删除

当前有一个列表 li = [11,22,33,22,22,44,55,77,88,99,11]。

要求一:去除列表中的重复元素

要求二:删除 77,88,99这三个元素

li = [11,22,33,22,22,44,55,77,88,99,11]

#去重用集合类型转换,再转换为列表

li_new = list(set(li))

li_new.sort()

print(li_new)

#要求二中利用remove函数删除列表的三个元素

li_new.remove(77)

li_new.remove(88)

li_new.remove(99)

print(li_new)

#或者用pop()删除三个元素

li = [11,22,33,22,22,44,55,77,88,99,11]

li_new = list(set(li))

li_new.sort()

#pop()删除元素,由于已经排序,所以默认删除最后一个

li_new.pop()

li_new.pop()

li_new.pop()

print(li_new)

#或者用切片删除

li = [11,22,33,22,22,44,55,77,88,99,11]

li_new = list(set(li))

li_new.sort()

n=len(li_new)

lst = li_new[:n-3]

print(lst)

[11, 22, 33, 44, 55, 77, 88, 99]

[11, 22, 33, 44, 55]

[11, 22, 33, 44, 55]

[11, 22, 33, 44, 55]

这道题考察的知识点:集合用来去重。

14.数据类型转换字典

有下面几个数据 :

t1 = ("aa",11)

t2= (''bb'',22)

li1 = [("cc",11)]

请通过学过的知识点,进行相关操作变为如下字典: {"aa":11,"cc":11,"bb":22}:

#方法1 extend()

a,b,c = t1,li1[0],t2

list = []

list.extend([a,b,c])

print(dict(list))

{'aa': 11, 'cc': 11, 'bb': 22}

#方法2

t1 = ('aa',11)

t2 = ('bb',22)

li1 = [('cc',11)]

li1.insert(0,t1)

li1.insert(2,t2)

print(dict(li1))

{'aa': 11, 'cc': 11, 'bb': 22}

#方法3

ti = ("aa",11)

t2 = ("bb",22)

li1 = [("cc",11)]

new_dict = {}

new_dict[t1[0]] = t1[1]

new_dict[t2[0]] = t2[1]

new_dict[li1[0][0]] = li1[1]

{'aa': 11, 'cc': 11, 'bb': 22}

每种方法都要掌握!

15.利用判断计算价格

一家商场在降价促销,所有原价都是整数(不需要考虑浮点情况),如果购买金额50-100元(包含50元和100元)之间,会给

10%的折扣,如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(%10或20%)和最终价格。

price = int(input('请输入购买金额:'))

if price >= 50 and price <= 100:

price_sale = price * (1 - 0.1)

#利用format(price_sale,'.2f')函数,取小数点后两位

print('折扣为:10%,最终价格为:{}元。'.format(format(price_sale,'.2f')))

elif price > 100:

price_sale = price * (1 - 0.2)

print('折扣为:20%,最终价格为:{}元。'.format(format(price_sale,'.1f')))

else:

print('没有折扣,最终价格为:{}元。'.format(price))

请输入购买金额:111

折扣为:20%,最终价格为:88.8元。

需要注意取小数点。

16.判断是否为闰年

输入一个有效的年份(如:2019),判断是否为闰年(不需要考虑非数字的情况)

如果是闰年,则打印“2019年是闰年”;否则打印“2019年不是闰年”

year = int(input('输入一个有效的年份(如:2019):'))

#闰年判断条件:首先保证年数能被4整除

if year % 4 == 0:

#年份能被100整除,但不能被400整除时,是平年

if year % 100 == 0 and year % 400 != 0:

print('公元{}年不是闰年。'.format(year))

else:

print('公元{}年是闰年。'.format(year))

else:

print('公元{}年不是闰年。'.format(year))

请输入第1个整数:190

请输入第2个整数:210

请输入第3个整数:65

最大值为:210

#方法2

year = int(input("请输入需要查询的年份:"))

if year % 4 == 0:

if year % 100 == 0:

if year % 400 == 0:

print("是闰年")

else:

print("不是闰年")

else:

print("是闰年")

else:

print("不是闰年")

闰年的两个判断条件:年数能被4整除,年份能被100整除,同时要被400整除。方法很多,这里只列举一个。

17.求数字最大值

求三个整数中的最大值,提示:定义 3 个变量。

a = int(input("请输入第1个整数:"))

b = int(input("请输入第2个整数:"))

c = int(input("请输入第3个整数:"))

if a >= b and a >= c:

print("最大值为:{}".format(a))

elif b >= a and b >= c:

print("最大值为:{}".format(b))

else:

print("最大值为:{}".format(c))

请输入第1个整数:190

请输入第2个整数:210

请输入第3个整数:65

最大值为:210

当然这里可以用max函数,更简单。

a = int(input("请输入第1个整数:"))

b = int(input("请输入第2个整数:"))

c = int(input("请输入第3个整数:"))

print(max(a,b,c))

请输入第1个整数:3

请输入第2个整数:2

请输入第3个整数:1

3

18.使用for打印九九乘法表

输出九九乘法表,格式如下:(每项数据之间空一个Tab键,可以使用"\t")

#x是被乘数

for x in range(1,10):

#y是乘数

for y in range(1,x + 1):

print(y, 'x' ,x ,'=',x*y,end='\t')

print('')

1 x 1 = 1

1 x 2 = 22 x 2 = 4

1 x 3 = 32 x 3 = 63 x 3 = 9

1 x 4 = 42 x 4 = 83 x 4 = 124 x 4 = 16

1 x 5 = 52 x 5 = 103 x 5 = 154 x 5 = 205 x 5 = 25

1 x 6 = 62 x 6 = 123 x 6 = 184 x 6 = 245 x 6 = 306 x 6 = 36

1 x 7 = 72 x 7 = 143 x 7 = 214 x 7 = 285 x 7 = 356 x 7 = 427 x 7 = 49

1 x 8 = 82 x 8 = 163 x 8 = 244 x 8 = 325 x 8 = 406 x 8 = 487 x 8 = 568 x 8 = 64

1 x 9 = 92 x 9 = 183 x 9 = 274 x 9 = 365 x 9 = 456 x 9 = 547 x 9 = 638 x 9 = 729 x 9 = 81

乘法表就不多叙述了,面试必备!

19.循环删除元素

你的微信好友当中有 5 个推销的,他们存在一个列表 black_list=['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']

请依次把这 5 个人分别从 black_list 当中删除,最后 black_list 为空。

black_list = ['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']

print(black_list)

length = len(black_list)

for i in range(length):

black_list.pop()

print(black_list)

['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']

[]

以上便是《Python实战10-19例》的所有内容,本系列持续更新,每道都是精挑细选的质量题。

原创不易,转载请注明原作者。如果喜欢请点赞和关注,谢谢大家的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值