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

这篇具有很好参考价值的文章主要介绍了Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        实务中,我们经常需要将数据排序,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 之惑,有这一篇就够了😁https://blog.csdn.net/iprobobo/article/details/123591952文章来源地址https://www.toymoban.com/news/detail-436533.html

到了这里,关于Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python list.sort方法和内置函数sorted

    list.sort 方法会就地排序列表,也就是说不会把原列表复制一份。这也是这个方法的返回值是 None 的原因,提醒你本方法不会新建一个列表。在这种情况下返回 None 其实是Python 的一个惯例:如果一个函数或者方法对对象进行的是就地改动,那它就应该返回None,好让调用者知道

    2024年01月18日
    浏览(31)
  • python中sorted()函数解析

    sorted() 函数对所有可迭代的对象进行排序操作。 sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础

    2024年02月03日
    浏览(29)
  • Python 列表 sort()函数使用详解

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 小白零基础《Python入门到精通》 sort() 可以对列表进行 「排序」 语法 参数 key :(可选)指定排序规则 reverse :(可选)升序降序 返回值 返回

    2024年02月13日
    浏览(29)
  • Python基础之sorted()函数用法

    本篇是关于sorted()函数的一些基本用法,如有不足缺陷欢迎补充指正。 1、简单的排序 sorted函数可以对可迭代类型的容器内的数据进行排序 2、进阶使用 sorted(L,key=···) 其中key用来接收一个自定义的排序规则 3、选择升序还是降序排列方式 其中sorted函数是默认升序排序,

    2024年02月11日
    浏览(35)
  • JDK8的lambda方式List多字段排序List.stream().sorted()

    JDK8的lambda方式List多字段排序List.stream().sorted() 多字段排序 拼音排序: 引入jar包: 自定义比较器: 结束。

    2024年02月10日
    浏览(32)
  • C++ Sort函数详解

    C++ Sort函数详解 前言 :sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使用 stable_sort 函数,这里不过多介绍。 一、sort函数调用的两种方式 方式一(默认) void sort (

    2024年02月08日
    浏览(29)
  • 库函数sort

    bool cmp(Rec a,Rec b)//W1a是否应该排在b前面 {     return a.xb.x;//a小于b就排在前面     // return ab; }只需在这里改变大于还是小于排序  改一下 struct Rec {     int x,y;     bool operator(const Rec t)const//W2重载小于号     {         return xt.x;     } }a[5]; 并且不用cmp了 sort(a,a+5); 打印效果如上

    2024年02月06日
    浏览(26)
  • sort函数详解

    目录 sort介绍 sort中cmp的使用 代码样例 输出结果 cmp进行升序排序 代码样例 输出结果 借助less和greater进行升降排序 代码样例 输出结果 下面我来介绍sort的一些用法。 sort(v.begin(),v.end()) ,它是用来对一组序列进行排序的。sort函数进行排序的时间复杂度为 n*log2n ,比冒泡之类

    2024年02月16日
    浏览(33)
  • C++ sort()函数具体用法

    sort() 函数可以将一个容器或者数组的值进行排序,还可以自定义排序方式。 sort() 是基于头文件 algorithm 库下的一个函数,所以要调用 sort() ,就需要添加头文件。 一.正常排序 我们可以通过写 我们就可以将 arr 中从开始的元素到第5个元素按从小到大的顺序进行排序。 二.排序

    2024年02月06日
    浏览(31)
  • ⌈算法进阶⌋图论::拓扑排序(Topological Sorting)——快速理解到熟练运用

    目录  一、原理 1. 引例:207.课程表  2. 应用场景 3. 代码思路 二、代码模板 三、练习 1、210.课程表Ⅱ🟢 2、2392.给定条件下构造举证🟡 3、310.最小高度树🟡 4、 2603.收集树中金币 🔴 1. 引例:207.课程表 就如大学课程安排一样,如果要学习数据结构与算法、机器学习这类课程

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包