1. 对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比。在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的。
    主要的区别在于,list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表。而内建函数sorted返回的是一个新的list,而不是在原来的基础上进行的操作.

  2. 再来,让我们用Python自带的帮助函数help()看看对于sorted()是怎么定义的:

     >>>help(sorted)Help on built-in function sorted in module builtins:sorted(iterable, key=None, reverse=False)Return a new list containing all items from the iterable in ascending order.A custom key function can be supplied to customise the sort order, and thereverse flag can be set to request the result in descending order.

要先说明的是, 本人用的Python版本为3.5, 所以会跟Python2的有变差。

由帮助可以看到,传进去一个可迭代的数据,返回一个新的列表,注意,是新的列表!来看看看实例吧:

>>>g=[1,4,6,8,9,3,5]
>>>sorted(g)
Out[30]: [1, 3, 4, 5, 6, 8, 9]>>>sorted((1,4,8,9,3,6))
Out[33]: [1, 3, 4, 6, 8, 9]>>>sorted('gafrtp')
Out[35]: ['a', 'f', 'g', 'p', 'r', 't']

由以上可以看到,只要是可迭代对象数据,都能够进行排序,生成一个排序后的列表。

  1. 如果想要排逆序呢?很简单,只要将可选参数reverse设置为True即可:

     >>>sorted((1,4,8,9,3,6), reverse=True)Out[36]: [9, 8, 6, 4, 3, 1]

高级用法

有时候,我们要处理的数据内的元素不是一维的,而是二维的甚至是多维的,那要怎么进行排序呢?这时候,sorted()函数内的key参数就派上用场了!从帮助信息上可以了解到,key参数可传入一个自定义函数。那么,该如何使用呢?让我们看看如下代码:

>>>l=[('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
>>>sorted(l, key=lambda x:x[0])
Out[39]: [('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
>>>sorted(l, key=lambda x:x[0], reverse=True)
Out[40]: [('e', 3), ('d', 4), ('c', 6), ('b', 2), ('a', 1)]
>>>sorted(l, key=lambda x:x[1])
Out[41]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
>>>sorted(l, key=lambda x:x[1], reverse=True)
Out[42]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]

这里,列表里面的每一个元素都为二维元组,key参数传入了一个lambda函数表达式,其x就代表列表里的每一个元素,然后分别利用索引返回元素内的第一个和第二个元素,这就代表了sorted()函数利用哪一个元素进行排列。而reverse参数就如同上面讲的一样,起到逆排的作用。默认情况下,reverse参数为False

当然,正如一开始讲到的那样,如果想要对列表直接进行排序操作,可以用成员方法sort()来做:

>>>l.sort(key=lambda x : x[1])
>>>l
Out[45]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
>>>l.sort(key=lambda x : x[1], reverse=True)
>>>l
Out[47]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]

对于三维及以上的数据排排序,上述方法同样适用。

转载于:https://www.cnblogs.com/brad1994/p/6697196.html

Python 内置函数sorted()在高级用法相关推荐

  1. Python内置函数sorted()高级排序用法

    可以结合Python内置函数sorted()从入门到精通来看一些稍微基础的排序用法. >>> from operator import itemgetter >>> ...

  2. Python内置函数sorted()和列表方法sort()排序规则不得不说的事

    Python内置函数sorted()和列表方法sort()可以使用key参数指定排序规则,并且都是稳定排序,也就是说,对于指定规则不能涵盖的元素,本来谁在前面,排好以后谁还是在前面. 直接用代码说话: ...

  3. Python内置函数sorted()从入门到精通

    Python内置函数sorted()可以对列表.元组.字典.集合.字符串.range对象以及其他可迭代对象进行排序,返回排序后的列表,支持使用key参数指定排序规则,支持reverse参数指定升序或者 ...

  4. Python内置函数sorted()和列表方法sort()的排序原理

    问题描述:在Python中,可以使用内置函数sorted()和列表方法sort()对数据进行排序,但要求所有数据支持关系运算符,也就是这些数据本身是可以比较大小的才能进行排序,除非使用key参数明确指 ...

  5. python内置函数布尔值bool用法详解

    python内置函数bool可将给定参数转换为bool类型,bool函数的返回值要么是True,要么是False,在做转换时,0, None,空字符串,空列表,空元组,空集合,空字典都会被转换为Fal ...

  6. python内置函数sorted(x)的作用是_Python内置filter与sorted函数

    Python内部提供了序列过滤函数 filter . 接收参数为 一个函数以及一个序列.函数依次作用于序列中的每一个元素,并根据返回值是True 或者 False 判断是否删除该元素. 样例如下 # ...

  7. python内置函数——sorted、filter、map、format

    对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本 方法2.用built-in函数sor ...

  8. Python内置函数max()高级用法

    不管是排序还是选取最大值或者最小值,都应该有个规则或者顺序,而平时我们所说的最大值或最小值实际上也是在某种排序规则或顺序下的最大值和最小值.Python内置函数max().min()和sorted() ...

  9. python编写函数模拟内置函数sorted_python内置函数sorted()用法深入分析

    本文实例讲述了python内置函数sorted()用法.分享给大家供大家参考,具体如下: 列表对象提供了sort()方法支持原地排序,而内置函数sorted()不支持原地操作只是返回新的列表,并不对原 ...

最新文章

  1. SAP根据用户名查姓名
  2. SpringBoot+Swagger2.7.0实现汉化(2.8.0不行)
  3. Radar Installation
  4. 转型产品经理该怎么做(适用于0-2岁的产品经理)
  5. php正则表达式 n,CFC4N小试php正则表达式
  6. 线下社群要如何拉新呢?
  7. 为什么DNN的SectionHead Control图片无法显示,也无法折叠
  8. 转自weiphone]在美做开发多年,写给国内apple开发新手的一些心得,无教程
  9. xamarin使用oracle数据库,XamarinSQLite教程在Xamarin.Android项目中使用数据库
  10. java 编译器和 jvm_java编译器和JVM有什么区别
  11. js 编译emoji表情
  12. 5款App帮你创建时间轴
  13. 方正飞翔加密锁_方正飞翔6.0数字版注册机
  14. 基于JAVA教师教学质量评估系统计算机毕业设计源码+数据库+lw文档+系统+部署
  15. Elasticjob安装与入门
  16. 浅析 微信公共平台消息 开发原理
  17. 弄清楚DL,D-H,CDH problem,CDH assumption,DDH,BDDH,BCDH
  18. 计算机考研就业率,21考研同学需谨慎,三个专业就业率持续走低,包括热门计算机专业...
  19. 巴西龟饲养日志----八月底巴西龟状况
  20. opengl 先旋转后平移和先平移后旋转解惑

热门文章

  1. Arduino(新手之路2)
  2. 简单图片浏览器的实现
  3. iOS自定义View 控件自动计算size能力
  4. iOS开发图片纯色填充(两种方式)和缩小图片
  5. MySQL主从复制之传统复制与GTID模式之间切换
  6. python抓取网页图片的小案例
  7. 为uThreadPool增加线程池等待功能
  8. wan886网址导航 Bo9bo高清电影 两个图标 怎么都删不掉
  9. PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)
  10. matlab 基于 libsvm工具箱的svm分类遇到的问题与解决