python动物重量排序详解

先看题目:

输入格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
每次输入一个动物名,以及其重量和单位,动物名与重量间用空格分隔,
直接输入回车时结束输入(此时输入的字符为空字符串)。

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
以二维列表形式输出,按重量由小到大升序排序。

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输入:
北极熊 0.75t
企鹅 35kg
海豹 0.35t
白鲸 1.35t

输出:
[['企鹅', '35kg'], ['海豚', '228kg'], ['海豹', '0.35t'], 
['北极熊', '0.75t'], ['白鲸', '1.35t']]

再看代码:

list1 = []         #定义空列表
while 1:           #循环输入
    a = input().split() #input().split()一般默认空格或者换行输入
    if len(a) == 0:     #如果输入为空的时候回车
        break
    else:
        list1.append(a) #将输入按字符串的形式加入二维列表
#sorted(序列, key = 函数)
list2 = sorted(list1, key = lambda x:float(x[1][:-1])*1000 if x[1][-1] == 't' 
else float(x[1][:-2]))
print(list2)
#1,float(x[1][:-1])*1000 if x[1][-1] == 't'表示将单位为't'这行中,
#第二个字符串t之前的元素,例如0.35t中的0.35,*1000后按大小输出

输入和输出:

海豚 228kg
北极熊 0.75t
企鹅 35kg
海豹 0.35t
白鲸 1.35t

[['企鹅', '35kg'], ['海豚', '228kg'], ['海豹', '0.35t'], 
['北极熊', '0.75t'], ['白鲸', '1.35t']]

知识点分析:

1,lambda函数(这里有lambda与sorted,filter,map结合的例子)Python二维列表排序之lambda,sorted,filter,map函数_csdner250的博客-CSDN博客https://blog.csdn.net/csdner250/article/details/1280548382,[:-1]表示[0:-1],从第0个元素到最后一个元素之前,这种格式包左不包右(左闭右开),意思是包括0,不包括-1(最后一个元素),比如list1 = [2,3,6,11,7,9]中print(list1[3:-1])就是[11,7]

注意数组,列表等的下标都从0开始

3,python中input()的输入的变量,不加转换的话默认为字符串形式

可以用int(input()), float(input())按某一类型输入,具体参考:

(7条消息) python常见input()输入形式_study_&的博客-CSDN博客_pythoninput输入类型https://blog.csdn.net/goodgoodstudy___/article/details/123043590

一首甜歌:

东西(原唱:林俊呈) - 很美味 - 单曲 - 网易云音乐

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千帐灯无此声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值