python列表的降序,python降序排列函数
您可以使用python list的内置sort()方法进行排序,或者使用python的全局sorted()方法对可重复序列进行排序并生成新序列。
1)排序依据
简单的上升排序非常简单。已排序))调用方法即可。新列表被返回。新列表中的元素根据小于__lt__的运算符进行排序。
代码如下:排序([5,2,3,1,4])。
[ 1,2,3,4,5 ]
List.sort(也可以使用方法进行排序。在这种情况下,列表本身将被修改。这种方法通常没有sorted()方便,但是如果不需要保留原始列表的话会更有效。
代码:a=[5,2,3,1,4]
a.sort())
A
[ 1,2,3,4,5 ]
另一个区别是list.sort))方法只在list中定义,而sorted))方法对所有可重复序列都有效。
代码如下:排序(,2:(b),3: B),4: E) e),5: (a))
[ 1,2,3,4,5 ]
2)关键参数/功能
从python2.4开始,list.sort () (function and sorted))函数增加了一个key参数,用来指定在比较每个元素之前要调用的函数。例如,key指定的函数将忽略字符串的大小写。
下面的代码是:sorted(thissiststringfrommandrew)。split),key=str.lower)。
[a , Andrew , from , is , string , test , This]
关键参数的值是一个函数,只有一个参数,返回一个值进行比较。因为这种技术可以正确地为每个元素调用key指定的函数。
更广泛使用的是按复杂对象的几个值对复杂对象的顺序进行排序,如下所示:
代码:student_tuples=[
(约翰福音,第15章)
(cxdxxm)、(b)、(12)、
戴夫,b,10)
]
sorted(student_tuples,key=lambdastudent : student [2] ) #按年龄排序
[戴夫(Dave )、( b )、( 10 )、( cxdxxm )、( b )、( 12 )、( john )、( a)、15]
同样的技术也可以应用于具有命名属性的复杂对象。例如:
代码如下:班级学生:
def __init__(本人,姓名,年级,年龄) :
self.name=name
自我等级=等级
年龄=年龄
def __repr__(self):
returnrepr((自我姓名,自我年级,自我年龄) )
student_objects=[
学生(约翰,甲,15),
学生(cxdxxm)、(b)、(12)、
学生(戴夫, b ,10),
]
sorted(student_objects,key=lambda student:student . age)#按年龄排序
[戴夫(Dave )、( b )、( 10 )、( cxdxxm )、( b )、( 12 )、( john )、( a)、15]
3)操作员模块功能
由于上面提到的关键参数被广泛使用,python提供了几个方便的函数,使得访问方法简单快捷。操作符模块包括一个项获取器和一个属性获取器,从2.6开始增加了methodcaller方法。这些方法可以使上述操作更加简洁快捷。
代码如下:fromoperatorimportitemgetter,attrgetter
已排序(student_tuples,key=itemgetter(2))
[戴夫(Dave )、( b )、( 10 )、( cxdxxm )、( b )、( 12 )、( john )、( a)、15]
sorted(student_objects,key=attrgetter(age))
[戴夫(Dave )、( b )、( 10 )、( cxdxxm )、( b )、( 12 )、( john )、( a)、15]
操作员模块还可以进行多级排序。例如,可以先按年级排序,再按年龄排序。
Code: sorted(student_tuples,key=itemgetter (1,2))。
(约翰)、( a )、( 15)、戴夫、( b、10)、cxdxxm 、( b、12)
已排序(student_objects,key=attrgetter(grade , age ))
(约翰)、( a )、( 15)、戴夫、( b、10)、cxdxxm 、( b、12)
4)升序和降序
List.sort(和sorted)都接受指示升序或降序的参数reverse。例如,上面的学生按降序排序如下:
代码如下:sorted(student_tuples,key=itemgetter(2,reverse=True))
[约翰、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫]
sorted(student_objects,key=attrgetter(age),reverse=True).
[约翰、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫、大卫]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。