Python3 列表自定义排序

Posted ITAK

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 列表自定义排序相关的知识,希望对你有一定的参考价值。

    很多时候我们需要对一个list列表进行排序,然而我们想按照自己的排序方式进行排序,那么就需要自定义一个排序函数,然后按照这个排序函数进行排序。

    由于Python3 取消了对 cmp 的支持,那么我们就不能用以前的cmp函数,然后按照cmp函数进行排序了,Python2中的自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_key(x)代替。

    python3 帮助文档: sorted(iterable, key=None, reverse=False)

    key接受一个函数,这个函数只接受一个参数,默认为None

    reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False

那么我们要改写的就是这个 key 所对应的方法,由于只接受一个参数,那么我们想对哪个元素进行排序,就把哪个元素传进去。然后利用 lambda 表达式进行排序就好了。

举个例子:51Nod 1874 字符串排序

思路:

我们就将每一个字符串的无序度计算出来,然后按照无序度从小到达排序就OK了

代码:

def cmp1(a):
    la = len(a)
    suma = 0
    for i in range(0,la):
        for j in range(i+1, la):
            if a[j]<a[i]:
                suma+=1
    return suma
s = input()
num = s.split()
n = int(num[0])
m = int(num[1])
list = []
i = 0
while i < m:
    list.append(input())
    i+=1
list.sort(key=lambda x:cmp1(x))
for i in list:
    print(i)

以上是关于Python3 列表自定义排序的主要内容,如果未能解决你的问题,请参考以下文章

排序JSONArray后,自定义列表视图没有改变?

使用自定义比较功能对列表列表进行排序

使用 c# 对自定义链接列表进行排序

按自定义顺序排序列表

python按自定义顺序排序字典列表[重复]

2019年6月12日——开始记录并分享学习心得——Python3.7中对列表进行排序