首页 > 编程知识 正文

Python中日期转换,python列表降序排序方法

时间:2023-05-06 09:33:50 阅读:150320 作者:1631

您可以使用Python list的内置sort ()方法进行排序,也可以使用python的全局sorted ()方法对可重复序列进行排序并生成新序列。

1 )排序基础

简单的升序排序非常简单。 sorted ) )只需调用方法。 返回新的列表。 新list中的元素根据小于__lt__的运算符进行排序。

代码为以下: sorted ([ 5,2,3,1,4 ] )。

[ 1,2,3,4,5 ]

list.sort (也可以使用方法进行排序。 在这种情况下,将修改list本身。 此方法通常不像sorted ()那样方便,但如果不需要保留原始list,则此方法更有效。

代码: a=[ 5,2,3,1,4 ]

a.sort () )

A

[ 1,2,3,4,5 ]

另一个区别是list.sort ) )方法只在list中定义,而sorted ) )方法对所有可重复的序列都有效。

代码如下所示:sorted (,2:(b )、3: 'B )、4: 'E ) e )、5: (a ) ) )

[ 1,2,3,4,5 ]

2 ) key参数/函数

从python2.4开始,list.sort () (函数和sorted ) ) )函数添加了key参数,用于指定在比较每个元素之前调用的函数。 例如,由key指定的函数将忽略字符串的大小写。

以下代码为: sorted (thisisateststringfromandrew ).split ),key=str.lower )。

['a ',' Andrew ',' from ',' is ',' string ',' test ',' This']

key参数的值是一个函数,此函数只有一个参数,并且返回一个值进行比较。 因为这个技术可以为每个元素正确调用key指定的函数。

更广泛的使用是按复杂对象的几个值对复杂对象的顺序进行排序,如下所示:

代码: student_tuples=[

(john,) a,15 )、

(cxdxxm )、(b )、12 )、

(dave,) b,10 )、

]

sorted(student_tuples,key=lambdastudent : student [2] ) # sort by age

[(Dave )、(b )、10 )、) cxdxxm、(b )、12 )、)、john、(a )、15 ) ]

同样的技术也适用于具有命名属性的复杂对象。 例如:

代码为以下:类student :

def __init__(self,name,grade,age ) :

self.name=name

self.grade=grade

self.age=age

def __repr__(self ) :

returnrepr((self.name,self.grade,self.age ) )

student_objects=[

student('John ',' a ',15 )、

sudent(cxdxxm )、(b )、(12 )、

student('Dave ',' b ',10 )、

]

sorted(student_objects,key=lambdastudent : student.age ) # sort by age

[(Dave )、(b )、10 )、) cxdxxm、(b )、12 )、)、john、(a )、15 ) ]

3 )操作器模块函数

由于上面提到的key参数使用非常广泛,python提供了几个方便的函数,使访问方法简单快捷。 操作器模块包括项目获取器和属性获取器,从2.6开始还添加了methodcaller方法。 使用这些方法可以使上述操作更加简洁和快捷。

代码为以下: fromoperatorimportitemgetter,attrgetter

sorted(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 ) ]

operator模块还可以进行多级排序。 例如,可以先按grade,然后按age排序。

代码:sorted(student_tuples,key=item getter (1,2 ) ) ) ) )。

[(John )、(a )、(15 )、) dave、(b、10 )、)、cxdxxm、(b、12 ) ]

sorted(student_objects,key=attrgetter('grade ',' age ' ) )

[(John )、(a )、(15 )、) dave、(b、10 )、)、cxdxxm、(b、12 ) ]

4 )升序和降序

list.sort (和sorted )都接受表示升序或降序排序的参数reverse。 例如,上面的student降序排序如下:

代码为以下:sorted(student_tuples,key=itemgetter(2,reverse=True ) )

[(John )、(a )、15 )、(cxdxxm、(b )、12 )、(dave、) b )、10 ) ]

sorted(student_objects,key=attrgetter('age ),reverse=True ) )。

[(John )、(a )、15 )、(cxdxxm、(b )、12 )、(dave、) b )、10 ) ]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。