指点成金-最美分享吧

登录

Python3 列表自定义排序

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了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]1    return sumas = input()num = s.split()n = int(num[0])m = int(num[1])list = []i = 0while i < m:    list.append(input())    i+=1list.sort(key=lambda x:cmp1(x))for i in list:    print(i)

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