华为od机试79 (python)身高体重排序

 某学校举行运动会,学生们按编号(123.....n)进行标识,
   现需要按照身高由低到高排列,
   对身高相同的人,按体重由轻到重排列,
   对于身高体重都相同的人,维持原有的编号顺序关系。
   请输出排列后的学生编号
输入描述:
两个序列,每个序列由n个正整数组成(0<n<100)。第一个序列中的数值代表身高,第二个序列中的数值代表体重。
输出描述:
排列结果,每个数值都是原始序列中的学生编号,编号从1开始
示例:
4
100 100 120 130
40 30 60 50
输出:2134
3
90 110 90
45 60 45
输出:132

先放参考链接:https://blog.youkuaiyun.com/aimee_c/article/details/119494805

因为太菜自己改了一下,跑出来的结果一样

n=int(input())
height = input().split()
weight = input().split()

arr1 = []
for i in range(n):
	#这里学到了
    arr1.append(((int(height[i]),int(weight[i])),i+1))

#这里原链接写的我不太能看懂为什么是[0][0],[0][1]
# def sorted_by_length_weight(x):
#     return x[0][0],x[0][1]

#这里的key我换了
arr2=sorted(arr1, key=lambda x:x[0])

#原作者这里这样写的 做这题的时候忘了tuple所以换了种方法
# print("".join(str(x) for x in list(tuple(i[1] for i in arr2))))
#我直接print id号,结尾空结束 就得到想要的结果
for i in arr2:
    print(i[1],end='')

结果:在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值