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

这篇具有很好参考价值的文章主要介绍了python list.sort方法和内置函数sorted。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

用返回 None 来表示就地改动这个惯例有个弊端,那就是调用者无法将其串联起来。而返回一个新对象的方法(比如说 str 里的所有方法)则正好相反,它们可以串联起来调用,从而形成连贯接口(fluent interface)。详情参见维基百科中有关连贯接口的讨论(https://en.wikipedia.org/wiki/Fluent_interface)。

与 list.sort 相反的是内置函数 sorted,它会新建一个列表作为返回值。这个方法可以接受任何形式的可迭代对象作为参数,甚至包括不可变序列或生成器(见第 14 章)。而不管sorted 接受的是怎样的参数,它最后都会返回一个列表。不管是 list.sort 方法还是 sorted 函数,都有两个可选的关键字参数。

  • reverse
    如果被设定为 True,被排序的序列里的元素会以降序输出(也就是说把最大值当作最小值来排序)。这个参数的默认值是 False。

  • key
    一个只有一个参数的函数,这个函数会被用在序列里的每一个元素上,所产生的结果将是排序算法依赖的对比关键字。比如说,在对一些字符串排序时,可以用 key=str.lower 来实现忽略大小写的排序,或者是用 key=len 进行基于字符串长度的排序。这个参数的默认值是恒等函数(identity function),也就是默认用元素自己的值来排序。

可选参数 key 还可以在内置函数 min() 和 max() 中起作用。另外,还有些标准库里的函数也接受这个参数,像 itertools.groupby() 和 heapq.nlargest() 等。

下面通过几个小例子来看看这两个函数和它们的关键字参数:

>>> fruits = ['grape', 'raspberry', 'apple', 'banana'] 
>>> sorted(fruits) 
['apple', 'banana', 'grape', 'raspberry'] 
>>> fruits 
['grape', 'raspberry', 'apple', 'banana'] 
>>> sorted(fruits, reverse=True) 
['raspberry', 'grape', 'banana', 'apple'] 
>>> sorted(fruits, key=len) 
['grape', 'apple', 'banana', 'raspberry'] 
>>> sorted(fruits, key=len, reverse=True) 
['raspberry', 'banana', 'grape', 'apple'] 
>>> fruits 
['grape', 'raspberry', 'apple', 'banana'] 
>>> fruits.sort() 
>>> fruits 
['apple', 'banana', 'grape', 'raspberry']

sortedlist.sort 背后的排序算法是 Timsort,它是一种自适应算法,会根据原始数据的顺序特点交替使用插入排序归并排序,以达到最佳效率。这样的算法被证明是很有效的,因为来自真实世界的数据通常是有一定的顺序特点的。维基百科上有一个条目是关于这个算法的(https://en.wikipedia.org/wiki/Timsort)。文章来源地址https://www.toymoban.com/news/detail-800456.html

到了这里,关于python list.sort方法和内置函数sorted的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python中sorted()函数解析

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

    2024年02月03日
    浏览(28)
  • 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)
  • Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解

            实务中,我们经常需要将数据排序,Python 内置函数 sorted() 及列表操作函数 sort() 均可实现该功能。         二者的完整语法如下: key:排序依据,通常为函数名,如 abs、str.lower、str.upper 等;或以函数指定可迭代对象中的某个元素来进行排序。 reverse:排序规

    2024年02月03日
    浏览(31)
  • 为什么list.sort()比Stream().sorted()更快?

    真的更好吗? 先简单写个demo 输出 由此可见list原生排序性能更好。 能证明吗? 证据错了。 再把demo变换一下,先输出stream.sort 此时输出变成了 这能证明上面的结论错误了吗? 都不能。 两种方式都不能证明什么。 使用这种方式在很多场景下是不够的,某些场景下,JVM会对代

    2024年02月14日
    浏览(27)
  • 1028 List Sorting (PAT甲级)

    Excel can sort records according to any column. Now you are supposed to imitate this function. Input Specification: Each input file contains one test case. For each case, the first line contains two integers N (≤105) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, eac

    2024年02月15日
    浏览(29)
  • C# list的sort排序

    目录 前言: 值类型的排序: 方法一:直接调用sort函数 方法二:通过C# ling表达式与CompareTo接口配合使用 方法三:降序的实现 对于自定义类型的sort排序  方法一:通过实现IComparable接口重写CompareTo方法来排序 方法二:通过ling表达式实现          有时需要对List列表中内

    2024年02月15日
    浏览(25)
  • 为什么 list.sort() 比 stream().sorted() 要更快?测试结果把我惊呆了!

    作者:是奉壹呀 来源:juejin.cn/post/7262274383287500860 看到一个评论,里面提到了list.sort()和list.strem().sorted()排序的差异。 说到list sort()排序比stream().sorted()排序性能更好,但没说到为什么。 有朋友也提到了这一点。本文重新开始,先问是不是,再问为什么。 推荐一个开源免费的

    2024年02月09日
    浏览(29)
  • Python基础知识:整理15 列表的sort方法

    之前我们学习过 sorted() 方法,可以对列表、元组、集合及字典进行排序                                                                                      但是上述的方法对于嵌套的数据就不好实现排序了,sort()方法便可以登场了!

    2024年01月19日
    浏览(42)
  • PTA 1052 Linked List Sorting

    个人学习记录,代码难免不尽人意。 A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, you are supposed to sort the structures according to their key values in increasing order. Inp

    2024年02月15日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包