当前位置:   article > 正文

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

python sort 定义函数

目录

使用reverse指定排序顺序

使用key指定排序规则

使用匿名函数制定规则

定义比较函数制定规则

制定多规则

多复杂规则排序


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

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

key :指定排序规则

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

使用reverse指定排序顺序

例如将列表降序排序

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

结果为

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

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

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

使用key指定排序规则

使用匿名函数制定规则

lambda 参数:操作(参数)

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

结果


 

定义比较函数制定规则

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

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

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

结果

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

  1. def fun(x):
  2. return abs(x)
  3. L=[24,-41,21,11,-13]
  4. L.sort(key=fun)
  5. print(L)

结果

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

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

  1. def fun(x):
  2. return abs(x)
  3. L=[24,-41,21,11,-13]
  4. L.sort(reverse=True,key=fun)
  5. print(L)

结果

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

  1. def fun(x):
  2. return abs(x)
  3. L=[15,26,45,-33,-15]
  4. L.sort(key=fun)
  5. print(L)

结果

制定多规则

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

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

  1. L=[15,-15,12,78,45]
  2. def fun(x):
  3. return (abs(x),x)
  4. L.sort(key=fun)
  5. print(L)

结果

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

  1. L=[15,-15,12,78,45]
  2. def fun(x):
  3. return (abs(x),-x)
  4. L.sort(key=fun)
  5. print(L)

结果

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

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

  1. L=[[180,90],[160,50],[160,60],[150,70]]
  2. def fun(x):
  3. return (x[0],-x[1])
  4. L.sort(key=fun)
  5. print(L)

结果

多复杂规则排序

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

  1. L=[[-13,10],[16,13],[13,6],[23,16]]
  2. def fun1(x):
  3. return abs(x)
  4. def fun2(x):
  5. return abs(x)%6
  6. def fun(x):
  7. return (fun1(x[0]),fun2(x[1]))
  8. L.sort(reverse=True,key=fun)
  9. print(L)

结果

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

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

结果

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号