实务中,我们经常需要将数据排序,Python 内置函数 sorted() 及列表操作函数 sort() 均可实现该功能。

二者的完整语法如下:

List.sort(key=None,reverse=False)
  • key:排序依据,通常为函数名,如 abs、str.lower、str.upper 等;或以函数指定可迭代对象中的某个元素来进行排序。
  • reverse:排序规则,reverse=True 降序, reverse=False 升序(默认)。
sorted(iterable,key=None,reverse=False)
  • iterable:排序对象,如字符串,列表,元组,字典等可迭代对象。
  • key:排序依据,通常为函数名,如 abs、str.lower、str.upper 等;或以函数指定可迭代对象中的某个元素来进行排序。
  • reverse:排序规则,reverse=True 降序, reverse=False 升序(默认)。

二者的主要区别是:sort() 是应用在列表上的方法,是对已经存在的列表进行排序操作并覆盖,无返回值;sorted() 则可以对所有可迭代的对象进行排序操作,返回的是一个新的列表,而不是在原来的基础上进行的操作。

>>>ls=[1,4,2,0,8,5,7,6,9,3]
>>>ls.sort()
>>>ls
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>>ls.sort(reverse=True)
>>>ls
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>>r=[(2,2),(3,4),(4,1),(1,3)]
>>>r.sort()
>>>r
[(1, 3), (2, 2), (3, 4), (4, 1)]    #默认以元组的第0个元素升序排序>>>r.sort(key=lambda x:x[1])    #若要按元组的非第0个元素排序,则需key
>>>r
[(4, 1), (2, 2), (1, 3), (3, 4)]>>>ls=[2,-1,5,-8,3]
>>>newls=sorted(ls,key=abs)
>>>ls
[2,-1,5,-8,3]
>>>newls
[-1, 2, 3, 5, -8]>>> sorted(['apple','Chandlar','bob','Monica'])    #按照ASCII升序排序
['Chandlar', 'Monica', 'apple', 'bob']>>> sorted(['apple','Chandlar','bob','Monica'],key=str.lower)    #把所有字符串变成小写之后再按照ASCII升序排序
['apple', 'bob', 'Chandlar', 'Monica']

如果要排序的对象比较复杂,难以用单一参数来实现时,则需要引入匿名函数 lambda

通常而言,Python 自定义函数主要有两种方式,一是 def,二便是 lambda。

  • lambda 函数体比 def 简单很多,比较直观。
  • lambda 的主体是一个表达式,而不是一个代码块。
  • lambda 表达式仅能封装有限的逻辑。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

lambda 函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

其中 [arg1 [,arg2,.....argn]] 为入口参数,expression 为函数体。作为函数对象,其也可赋值给一个变量,再利用变量来调用该函数:

>>> g=lambda x:x**2
>>> g
<function <lambda> at 0x7f945791e0>
>>> g(5)
25

因此,sort() 和sorted() 函数中,key=lambda x:x[] 即表示待排序对象按第多少维度进行排序。其中 x 可以为任意字母,方括号 [] 内为维数,根据需要设置。


注:

更多关于 lambda 函数的知识总结,请参见:Python 匿名函数之 lambda解 lambda 之惑,有这一篇就够了

Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解相关推荐

  1. python 排序函数 sort sorted 简介

    sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None: sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的 ...

  2. python函数与方法表,基于Python 函数和方法的区别说明

    简单总结: 1.与类和实例无绑定关系的function都属于函数(function): 2.与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方 ...

  3. python函数和类的区别_Python中类中的方法还有区别?

    上一篇,我们讲到Python类中的属性是有区别的,爱思考的小伙伴们可能就会问了,Python中的方法是不是也有区别呢?是的,而且Python中的方法区别更大,让我们来看看吧~ Python类中的三种方 ...

  4. python函数与方法的区别_python中函数和方法有哪些区别

    python中函数和方法有哪些区别 发布时间:2020-11-16 09:30:04 来源:亿速云 阅读:89 作者:小新 小编给大家分享一下python中函数和方法有哪些区别,相信大部分人都还不怎么 ...

  5. python函数和类的区别_python-函数、类与对象

    一.定义函数 在Python中可以使用def关键字来定义函数,和变量一样每个函数也有一个响亮的名字,而且命名规则跟变量的命名规则是一致的.在函数名后面的圆括号中可以放置传递给函数的参数,这一点和数学上 ...

  6. python class和def的区别_Python中class和def的理解

    class Cc(object): #class 是关键字(表示要开始创建类了),Cc是新建的类名称,object为类的继承,没有合适的继承类用object类,这是所有类最终会继承的类 def aa( ...

  7. python中的sort,sorted

    python中的sort,sorted 文章目录 python中的sort,sorted 两者区别 用法: 用法示例 对字典排序: 对列表排序: 两者区别 sorted有返回值,而sort没有返回值. ...

  8. python的sort函数

    一.基本形式 有两种形式: (1) iterable.sort(cmp=None, key=None, reverse=False) #python 2.x iterable.sort(key=Non ...

  9. python函数定义时带号的可变参数_在定义函数时,某个参数名字前面带有一个 * 符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中。_学小易找答案...

    [填空题]任意长度的 Python 列表.元组和字符串中最后一个元素的下标为 ( ) . [简答题]从键盘输入一个字符串,将小写字母全部转换成大写字母, 输出到磁盘文件"D:\test.tx ...

最新文章

  1. 免高考!2021清华北大保送名单公布,五大学科竞赛260人获保送资格
  2. C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加
  3. STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)
  4. 地球上这10个奇幻景观,带你踏入外太空
  5. powermock模拟对象_使用PowerMock测试对象的内部状态
  6. [精品]CSAPP Bomb Lab 解题报告(六)
  7. linux添加开机自启动脚本
  8. 深度学习笔记(40) YOLO
  9. 嵌入式操作系统内核原理和开发(延时操作)
  10. php admin_priv,ECshop后台开发模块步骤
  11. Linux环境下实现cobbler远程安装系统
  12. 服务器操作系统修复补丁,最后的更新!微软Windows 7发布KB4534310修复补丁
  13. 关于ios打包的一些事项
  14. 伍伦贡计算机科学硕士申请,伍伦贡大学电脑科学(网络和信息安全)硕士研究生申请要求及申请材料要求清单...
  15. 《Java-第十一章》之图书管理系统
  16. 微信小程序实现3D轮播图
  17. 想成为“独立名师”,你还要做到哪几点?
  18. android开发文字滚动代码,android实现滚动文本效果
  19. JSP入门教程(1)
  20. Solving environment: failed with initial frozen solve. Retrying with flexible solve的解决方法

热门文章

  1. 北大软件工程与计算机,北京大学软件工程考研经验分享
  2. 前端自动化部署,基于scp2,ssh2
  3. 天才程序员: 那些年我偷懒没敲的EOS代码, 让我失去了一切, 如果...
  4. 若个人计算机主板上的内存条松动,电脑内存条松动对电脑的影响与解决办法
  5. bbdlg的学习生活 - 开源中国社区 DFC
  6. mysql ip 查询工具_IP地址查询定位器 - 从全球最新的IP数据库查询IP详细信息
  7. kali pinyin拼音输入法
  8. CRC32 tools in Ubuntu /fedora
  9. 交通·未来第4期:利用新兴交通数据进行大规模路网交通管理—以无人车和网约车数据为例...
  10. Mask RcNN论文翻译