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 列表自定义排序的主要内容,如果未能解决你的问题,请参考以下文章