您的位置 首页 > 数码极客

python如何解决并列名次

一、列表(list)的成员函数sort:只适用于列表对象的排序,且排序后的结果会修改、覆盖该列表对象。

排序

x = [8, 5, 6, 10, 9, 3, 1, 2] x.sort() print('对x按升序排序:', x) x.sort(reverse=True) print('对x按降序排序:', x)对x按升序排序: [1, 2, 3, 5, 6, 8, 9, 10] 对x按降序排序: [10, 9, 8, 6, 5, 3, 2, 1]

二、sorted:属于Python的内置函数,可对任意可迭代对象进行排序,排序的结果以一个新的列表(list)返回,不影响原迭代对象。

组队

print('对字符串“python”进行拆分排序:',sorted('python')) x = [8, 5, 6, 10, 9, 3, 1, 2] print('对x按降序排序:', sorted(x, reverse=True)) print('x依然还是原来的x:',x)对字符串“python”进行拆分排序: ['h', 'n', 'o', 'p', 't', 'y'] 对x按降序排序: [10, 9, 8, 6, 5, 3, 2, 1] x依然还是原来的x: [8, 5, 6, 10, 9, 3, 1, 2]

三、除上述差异外,sort、sorted两者的参数及相关用法完全一致。

# 学生信息:姓名、等级、成绩 students = [('Mike', 'A', 88), ('Jack', 'A', 99),           ('Andy', 'B', 77), ('John', 'C', 66)] # 按姓名排序: s = sorted(students, key=lambda student: student[0]) print('按姓名排序:', s) # 先按等级由高到底,在等级相同的情况下再按成绩由高到低排序: # 注意&思考一下: #   1.为啥返回的是元组? #   2.成绩前面为啥有个负号? s = sorted(students, key=lambda student: (student[1], -student[2])) print('按等级、成绩排序:', s)按姓名排序: [('Andy', 'B', 77), ('Jack', 'A', 99), ('John', 'C', 66), ('Mike', 'A', 88)] 按等级、成绩排序: [('Jack', 'A', 99), ('Mike', 'A', 88), ('Andy', 'B', 77), ('John', 'C', 66)]# 补充一下元组相互比较的知识 # 以下比较均为True: print(('A',  88) == ('A',  88)) print(('A',  99)  > ('A',  88)) print(('A', -99)  < ('A', -88)) print(('A',  99)  < ('B',  99))True True True True

总结:sort对列表自己进行排序(“克己”);sorted对迭代对象输出一个列表格式的排序结果(“利人”)。通过key及reverse关键字参数,灵活运用排序方式。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“python如何解决并列名次”边界阅读