python列表的降序,python降序排列函数

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: