实务中,我们经常需要将数据排序,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. PHP和Javascript实现转换文件大小为人性化可读方式
  2. Node.js webpack-dev-server配置命令的两种方式
  3. handler原子锁_Linux的原子操作与同步机制
  4. 铜仁计算机专业学校,听说计算机专业的在本部啊 这是真的么
  5. 面向对象并不是必要的
  6. ubuntu下使用vi退出终端出现乱码的解决方案
  7. 使用supervisor / systemctl nginx uwsgi 运行odoo
  8. 代码雨代码源复制_两步教你打造一个代码雨动态壁纸效果,代码可以设置为名字...
  9. 微机实验报告7 定时/计数器应用实验
  10. Spotfire 对条形图中分组后的值排序
  11. 使用xml配置文件实现HSF框架和EDAS注册服务器的发布-订阅模式
  12. 010editor 11.01 破解
  13. python gui测试工具_GitHub - Github-Benjamin/LeChu: Python GUI工具 二次开发
  14. 手机wps取消不等宽分栏_wps取消分栏怎么设置
  15. oracle清除过期备份,rman delete obsolete删除过期备份集问题
  16. Learning Convolutional Neural Network for Graphs
  17. 金融远期合约与金融期货合约
  18. 轮播图动画滑动动画效果
  19. 低碳生活进行时!国产“芯”RK3568创造智慧出行新体验
  20. eel+html 2 exe

热门文章

  1. C++ QT开发人机象棋(评估函数)
  2. 安装威锋替换的镜像源
  3. 欧拉角速度与角速度的关系推导——欧拉运动方程
  4. java cmd进入目录_cmd进入某个目录
  5. C#爬虫,HttpClient请求,HtmlAgilityPack,HtmlDocument使用
  6. python怎么定义int变量_Python 变量类型 | 菜鸟教程
  7. [HTML5]配置Ngnix服务器支持manifest 离线存储
  8. 服务器内存条能点亮显示器吗,上两根内存条显示器就不亮了
  9. 燎原老师python_Python之火,可以燎原
  10. js省市县三级联动效果实例