网站首页 > 精选教程 正文
如何在 Python 中同时对平行列表进行排序?假如,有两个列表,一个存储参赛选手编号,一个存储参赛选手成绩,两者一一对应。
chengji=[7.5,9.6,7.2,8.6,6.3,9.2]
bianhao=["01","02","03","04","05","06"]
对成绩进行排序,同时排序选手编号,保持数据一一对应。
使用冒泡算法
通过使用双重循环,很容易实现冒泡排序的程序设计。用外层循环控制比较轮次,用内层循环控制每轮内的数据比较次数。
仅对分数排序,无法区分是哪位选手的成绩。同时对编号列表同步排序,实现编号与得分对应,符合交换条件时同步交换,从而能够确定参赛选手的具体得分和位次。
chengji=[7.5,9.6,7.5,8.6,6.3,9.2]
bianhao=["01","02","03","04","05","06"]
for k in range(1,len(chengji)):
for i in range(len(chengji)-k):
if chengji[i]<chengji[i+1]: #判断相邻两数值的大小
chengji[i],chengji[i+1]=chengji[i+1],chengji[i]
bianhao[i],bianhao[i+1]=bianhao[i+1],bianhao[i] #编号同步交换
mc=0
for i in range(0,len(chengji)):
if chengji[i]<chengji[i-1]: #名次并列处理
mc=i
print("第%d名 得分:%.2f 选手编号:%s" %(mc+1,chengji[i],bianhao[i]))
运行结果:
第1名 得分:9.20 选手编号:06
第2名 得分:8.60 选手编号:04
第3名 得分:7.50 选手编号:01
第3名 得分:7.50 选手编号:03
第5名 得分:6.30 选手编号:05
使用 zip() 和 sorted() 函数
使用 zip() 函数对两个列表中的相应元素进行配对,然后使用 sorted()根据一个列表的值对另一个列表进行排序。
chengji=[7.5,9.6,7.5,8.6,6.3,9.2]
bianhao=["01","02","03","04","05","06"]
combined_lists = list(zip(chengji, bianhao))
sorted_lists = sorted(combined_lists, key=lambda x: x[0], reverse=True)
sorted_list1 = [item[0] for item in sorted_lists]
sorted_list2 = [item[1] for item in sorted_lists]
mc = 0
for i in range(0,len(sorted_list1)):
if sorted_list1[i]<sorted_list1[i-1]: #名次并列处理
mc=i
print("第%d名 得分:%.2f 选手编号:%s" %(mc+1,sorted_list1[i],sorted_list2[i]))
使用字典
将两个列表合并为字典,对字典按值进行排序,然后拆分为两个排序列表。
chengji=[7.5,9.6,7.5,8.6,6.3,9.2]
bianhao=["01","02","03","04","05","06"]
dict1 = {}
dict1 = {bianhao[i]: chengji[i] for i in range(len(chengji))}
dict1 = {k: v for k, v in sorted(dict1.items(), key=lambda item: item[1], reverse=True)}
lst1 = [i for i in dict1.keys()]
lst2 = [i for i in dict1.values()]
mc = 0
for i in range(0,len(lst1)):
if lst2[i]<lst2[i-1]: #名次并列处理
mc=i
print("第%d名 得分:%.2f 选手编号:%s" %(mc+1,lst2[i],lst1[i]))
猜你喜欢
- 2024-12-15 源码级Java低代码核心能力:列表引擎(jvs-list)
- 2024-12-15 谈谈路由系统的设计方法 网络路由的设计与实现
- 2024-12-15 根据某个关键字的指定顺序,重新对数据源快速排序!
- 2024-12-15 list列表函数&方法 list函数怎么用
- 2024-12-15 一学就废|Python基础碎片,列表(List)
- 2024-12-15 Java中List,Set,Map三者的区别? list set和map区别
- 2024-12-15 我知道的JAVA排序 java十大排序
- 2024-12-15 2 万字长文详解 10 大多线程面试题|原力计划
- 2024-12-15 深入理解:推荐系统中的召回与排序(一)
- 2024-12-15 Java 集合排序策略接口 Comparator
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)