加载中......
输入验证码,即可复制
微信扫码下载好向圈APP, 登陆后即可进入消息页面查看验证码
只需要3秒时间
一、列表(list)的成员函数sort:只适用于列表对象的排序,且排序后的结果会修改、覆盖该列表对象。


一文搞懂Python中的排序方法(讲义)-1.jpg

排序
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)返回,不影响原迭代对象。


一文搞懂Python中的排序方法(讲义)-2.jpg

组队
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))TrueTrueTrueTrue总结:sort对列表自己进行排序(“克己”);sorted对迭代对象输出一个列表格式的排序结果(“利人”)。通过key及reverse关键字参数,灵活运用排序方式。
程序员圈
15520 查看 2 0 反对

说说我的看法高级模式

您需要登录后才可以回帖 登录|立即注册

  • lyz2000

    2021-2-23 07:49:48 使用道具

    来自: 中国来自: 中国来自: 中国来自: 中国
    厉害厉害
  • wenbin52521

    2021-2-23 16:30:45 使用道具

    来自: 北京来自: 北京来自: 北京来自: 北京
    转发了

相关阅读