资讯专栏INFORMATION COLUMN

浅谈 python 中的 sorted()与sort()

lansheng228 / 363人阅读

摘要:返回值是一个经过排序的可迭代类型,与一样。注一般来说,和可以使用表达式。与的不同在于,是在原位重新排列列表,而是产生一个新的列表。

我们需要对List进行排序,Python提供了两个方法
对给定的List L进行排序,
方法1.用List的成员函数sort进行排序
方法2.用built-in函数sorted进行排序(从2.4开始)

--------------------------------sorted---------------------------------------
>>> help(sorted)
Help on built-in function sorted in module __builtin__:

sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
---------------------------------sort----------------------------------------
>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1
-----------------------------------------------------------------------------
  

iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。

注;一般来说,cmp和key可以使用lambda表达式。

sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。

Sorting basic:

>>> print sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
>>> L = [5, 2, 3, 1, 4]
>>> L.sort()
>>> print L
[1, 2, 3, 4, 5]

Sorting cmp:

>>>L = [("b",2),("a",1),("c",3),("d",4)]
>>>print sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
[("a", 1), ("b", 2), ("c", 3), ("d", 4)]

Sorting keys:

>>>L = [("b",2),("a",1),("c",3),("d",4)]
>>>print sorted(L, key=lambda x:(x[1]))
[("a", 1), ("b", 2), ("c", 3), ("d", 4)]

Sorting reverse:

>>> print sorted([5, 2, 3, 1, 4], reverse=True)
[5, 4, 3, 2, 1]
>>> print sorted([5, 2, 3, 1, 4], reverse=False)
[1, 2, 3, 4, 5]

注:效率key>cmp(key比cmp快)

在Sorting Keys中:我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字
排过序后再用第一个关键字进行排序呢?

>>> L = [("d",2),("a",4),("b",3),("c",2)]
>>> print sorted(L, key=lambda x:(x[1],x[0]))
>>>[("c", 2), ("d", 2), ("b", 3), ("a", 4)]

以上环境python2.4

Via

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37415.html

相关文章

  • sort 中 key 的用法浅谈 python

    摘要:但是实际写程序中,我们经常会写出许多繁杂的丑陋的代码。特别推荐,许多代码让我获益匪浅,比如这里对的使用。用可以写出很简单直观的代码,如下当然,上面不考虑效率,这里有一个利用分治法思想的高效的方法。更多文章更多阅读中参数的用法高级编程技巧 用 Python 时间也算不短了,但总感觉自己在用写 C++ 代码的思维写 Python,没有真正用到其作为脚本语言的优势。之前刷 LeetCode ...

    keke 评论0 收藏0
  • Python 进阶之路 (一) List 进阶方法汇总,新年快乐!

    摘要:尝射于家圃,有卖油翁释担而立,睨之,久而不去。康肃问曰汝亦知射乎吾射不亦精乎翁曰无他,但手熟尔。康肃忿然曰尔安敢轻吾射翁曰以我酌油知之。 开启变身模式 大家好, 从这一期开始,我们会从小白变身为中等小白,在基础起步阶段有太多的东西我没有讲到,但是俗话说的好,无他,但手熟尔,只要多多练习,时间会是最好的证明,相信我们终有一天会成为高手,因此从这一系列开始,让我们一起更上一层楼,还是和往常...

    garfileo 评论0 收藏0
  • Python dict sort排序 按照key,value

    摘要:我们知道的内置数据类型是无序的,通过来获取对应的。可是有时我们需要对中的进行排序输出,可能根据,也可能根据来排。最简单的方法,这个是按照值排序又一个按照值排序,貌似比上一个速度要快点还是按值排序,据说更快。。。 我们知道Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据ke...

    betacat 评论0 收藏0
  • Google Python Class --- Sorting

    摘要:它直接作用于列表,并且没有返回值。排序时,列表中的元素会通过函数进行处理,并按照返回值进行排序。会按照元素的长度进行升序排列按照元素的小写进行排序后面可以是自定义函数表达式按照返回值排序元组元组是固定尺寸的元素的集合。 showImg(https://segmentfault.com/img/bVB1Wh); 刚才看到一位朋友谈到如何写出高逼格的文章,想了想确实有道理。所以特意弄一张高...

    madthumb 评论0 收藏0

发表评论

0条评论

lansheng228

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<