python中sort()函数的详细使用方法

目录

使用reverse指定排序顺序

使用key指定排序规则

使用匿名函数制定规则

定义比较函数制定规则

制定多规则

多复杂规则排序


sort()是python非常好用的排序函数,可以对一个列表进行排序,这个排序只是会修改原列表,不会创建新的列表

使用格式为list.sort(key, reverse)

key :指定排序规则

reverse :指定升序降序,默认升序,True表示逆转即降序、False表示不逆转即还是默认升序;

使用reverse指定排序顺序

例如将列表降序排序

L=[45,52,14,25,26,17]
L.sort(reverse=True)
print(L)

结果为

 对一个字符列表进行排序默认按字典序排序

L=['g','a','f','h','b','m','n']
L.sort()
print(L)

这里没有指定reverse,所以默认升序排序

使用key指定排序规则

使用匿名函数制定规则

lambda 参数:操作(参数)

按除以6的余数大小进行升序排序

python中sort()函数的详细使用方法_第1张图片

结果


 

定义比较函数制定规则

如果函数很复杂时可以分开写,不用匿名函数,只需要先定义比较函数,然后让key=比较函数即可,注意key=函数名称,函数名称不用加()

 例如按照字符串的长度来排序,len函数用于求字符串的长度,是系统自带的

L=['aaaaa','aa','aaaa','a']
L.sort(key=len)
print(L)

结果

自己定义一个比较函数fun,要求按照数的绝对值进行升序排序

def fun(x):
    return abs(x)

L=[24,-41,21,11,-13]
L.sort(key=fun)
print(L)

结果

先定义比较函数fun用于求绝对值,然后将fun函数传给了key参数,sort方法会遍历列表,将每一个遍历到的元素传入fun函数作为形参x,而fun函数的返回值将作为对应列表元素的排序规则

要求按照数的绝对值进行降序排序,配合使用reverse

def fun(x):
    return abs(x)

L=[24,-41,21,11,-13]
L.sort(reverse=True,key=fun)
print(L)

结果

规则比完的话比完如果都一样,则按原来的顺序不变,例如15和-15绝对值一样,排序完后所以还是按原来的位置不变,15还是在-15前面

def fun(x):
    return abs(x)

L=[15,26,45,-33,-15]
L.sort(key=fun)
print(L)

结果

制定多规则

要求先按x的绝对值从小到大排序,如果绝对值相等就按x从小到大排序

fun函数先返回x的绝对值,再返回x

L=[15,-15,12,78,45]
def fun(x):
    return (abs(x),x)

L.sort(key=fun)
print(L)

结果

要求先按x的绝对值从小到大排序,如果绝对值相等就按x从大到小排序

L=[15,-15,12,78,45]
def fun(x):
    return (abs(x),-x)

L.sort(key=fun)
print(L)

结果

因为默认是为升序,先按照abs(x)进行升序,如果abs(x)相同的话,则继续按照-x进行升序排序。而对-x进行升序,实际上就是按照x进行降序。

L中每一行第一个元素为每个同学的身高,第二个为体重,要求按身高从小到大排序,身高相等的按从大到小排序

L=[[180,90],[160,50],[160,60],[150,70]]

def fun(x):
    return (x[0],-x[1])

L.sort(key=fun)
print(L)

结果

多复杂规则排序

以下代码要求按第一个元素绝对值从小到大排序,如果绝对值相等就按第二个元素绝对值模6从大到小排序

L=[[-13,10],[16,13],[13,6],[23,16]]

def fun1(x):
    return abs(x)

def fun2(x):
    return abs(x)%6

def fun(x):
    return (fun1(x[0]),fun2(x[1]))

L.sort(reverse=True,key=fun)
print(L)

结果

类似的,max()函数是用来求一个列表的最大值,也可以像sort()函数一样用key指定比较规则,例如使用max分别求列表最大的数和绝对值最大的数

L=[12,-45,52,41,-74,15]
print(max(L))
print(max(L,key=abs))

结果

你可能感兴趣的:(算法,python)