Python3 列表自定义排序

版权声明:编写不易,转载请注明出处,谢谢。 https://blog.csdn.net/qingshui23/article/details/78806671
    很多时候我们需要对一个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)

猜你喜欢

转载自blog.csdn.net/qingshui23/article/details/78806671
今日推荐