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结合的例子)2,[:-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())按某一类型输入,具体参考:
一首甜歌:
