用lambda函数实现复杂排序

2021年5月27日 / 18次阅读 / Last Modified 2021年5月27日

下面用sorted函数来距离lambda在排序时的使用!

简单的排序,甚至都可以不使用lambda函数:

>>> a = [3,2,6,5,1,3,9,2]
>>> sorted(a)
[1, 2, 2, 3, 3, 5, 6, 9]
>>> sorted(a, key=lambda x:x)
[1, 2, 2, 3, 3, 5, 6, 9]

有一种排序,数据有多个维度,要求按照某一个维度进行排序:

>>> c = [(1,2),(1,3),(1,4),(2,1),(3,1)]
>>> sorted(c)
[(1, 2), (1, 3), (1, 4), (2, 1), (3, 1)]
>>> sorted(c, key=lambda x:x[0])
[(1, 2), (1, 3), (1, 4), (2, 1), (3, 1)]
>>> sorted(c, key=lambda x:x[1])
[(2, 1), (3, 1), (1, 2), (1, 3), (1, 4)]

注意一个细节,sorted函数python官方保证是稳定的排序算法,即在key值相同的情况,能够保证原来的顺序不变!

复杂一点,list中即有正数,也有复数,要求先排正数,从小到大,然后排复数,从大到小:

>>> b = [4,2,5,1,-5,-8,-12,-5,9]
>>> sorted(b)
[-12, -8, -5, -5, 1, 2, 4, 5, 9]
>>> sorted(b, key=lambda x:(x<0,abs(x)))
[1, 2, 4, 5, 9, -5, -5, -8, -12]

用来比较的key变成了一个tuple,实际上排序就变成了tuple之间的比较,按index顺序比较,如果相同,index增加继续比较。

-- EOF --

本文链接:https://www.pynote.net/archives/3698

相关文章

    留言区

    您的电子邮箱地址不会被公开。 必填项已用*标注


    前一篇:
    后一篇:

    More


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top