网站首页 > 基础教程 正文
如何在 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-11 Python 中列表、元组、集合和字典之间的区别
- 2024-12-11 python每天学习一点点(遍历列表-for循环)
- 2024-12-11 python数据类型(三):列表
- 2024-12-11 python教程从基础到精通,第5课—List列表
- 2024-12-11 4种方法详解:Python列表倒序输出问题,快速提高你的编程效率
- 2024-12-11 一学就废|Python基础碎片,列表(List)
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)