python的sort/sorted

    sort是python的一个内建函数,看一下python3下的sort(sorted()和sort函数功能一致,只是是否对排序对象本身改变有差异,所以以下只介绍sort)的函数定义:

L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

    默认情况下key=None,reverse=False,reverse参数表示是否对排序结果反转,简单明了,这里就不做过多说明。重点留给key这个参数:
    >>>a=[1,3,4,5,2,6,9,8,7]
    >>>a.sort()
    >>>a
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    #不带参数的情况下,sort对可排序对象默认进行从小到大的排序,当然,reverse置为true时则按照从大到小。

    >>>a=[[2,4,7],[1,5,9],[2,5,8],[3,9,10],[6,9,13]]
    >>>a.sort()
    >>>a
    [[1, 5, 9], [2, 4, 7], [2, 5, 8], [3, 9, 10], [6, 9, 13]]
#默认按照每个元素的第一个元素进行排序,如果我要按照元素的第二个元素进行排序呢?

    >>>a=[[2,4,7],[1,5,9],[2,5,8],[3,9,10],[6,9,13]]
    >>>a.sort(key=lambda x:x[1])
    [[2, 4, 7], [1, 5, 9], [2, 5, 8], [3, 9, 10], [6, 9, 13]]
    #这下就是按照每个元素中的第二个元素进行排序的了

    #如果要按照多级比较呢?比如说以每个元素的第二元素为主序,第三个元素为次序依次排序。可以这样子:
    >>>a=[[2,4,7],[1,5,9],[2,5,8],[3,9,10],[6,9,13]]
    >>>a.sort(key=lambda x:(x[1],x[2]))
    >>>a
    [[2, 4, 7], [2, 5, 8], [1, 5, 9], [3, 9, 10], [6, 9, 13]]
    #仔细观察下a中元素的位置,你就能理解key的用法了。 
    通常情况下,sort针对大量数据的排序时间复杂度会较高,对于Python来说,可以利用operator库的itemgetter函数来加开排序速度,用法如下:  
    >>>from operator import itemgetter
    >>>a=[[1, 5, 9], [2, 4, 7], [2, 5, 8], [3, 9, 10], [6, 9, 13]]

    #上面的例子就可以写成这样:
    #按照列表成员的第一个元素进行排序
    >>>a.sort(key=itemgetter(1))
    >>>a
    [[2, 4, 7], [1, 5, 9], [2, 5, 8], [3, 9, 10], [6, 9, 13]]
    #同样的,多级排序依然可以使用itemrgetter提速
    >>>a.sort(key=itemgetter(1,2))
    [[2, 4, 7], [2, 5, 8], [1, 5, 9], [3, 9, 10], [6, 9, 13]]
    #是不是很方便?不仅提速而且精简用法。
Ps:以上例子均以list为例,但是实际上,sort函数不仅仅是list的专属,只要是可迭代的对象都可以调用sort或sorted方法。所以,你也可能经常在元祖,字典中见到sort. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值