zoukankan      html  css  js  c++  java
  • python 中的 sorted

     1) 输入help(sorted)可以得到下面类容:

    ----------------------------------------------------------------------------------

    sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

    -----------------------------------------------------------------------------------

    sorted 可以对任意一个可迭代序列进行排序。如下:

    print sorted([1,2,-9,3,5,4])       # [-9, 1, 2, 3, 4, 5]
    print sorted({1:4,89:3,-9:4,10:2}) # [-9, 1, 10, 89]
    

    sorted对对迭代序列排序后,返回排序后的列表,原序列不变。而像列表等自带的sort()方法则是在原地进行排序。

    2)key参数

       list.sort()和sorted()函数增加了key参数来指定一个函数,此函数将在每个元素比较前被调用.一般可使用lambda表达式,看下面例子:

    # 用key指定排序忽略大小写
    s = ['asrt','Afjg','bdfk','Ckfdh']
    print sorted(s)                                        # ['Afjg', 'Ckfdh', 'asrt', 'bdfk']
    print sorted(s,key = lambda element: element.lower())  # ['Afjg', 'asrt', 'bdfk', 'Ckfdh']
    

    key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。这个技术是快速的因为key指定的函数将准确地对每个元素调用。如下对复杂对象排序:

    s  = [('Hailey',23,175),('Lily',22,180),('Mike',19,170)]
    print sorted(s)                                   # [('Hailey', 23, 175), ('Lily', 22, 180), ('Mike', 19, 170)]
    print sorted(s,key = lambda element:element[1])	  # [('Mike', 19, 170), ('Lily', 22, 180), ('Hailey', 23, 175)]
    

    对于多元对象,sorted是默认根据第一个元素进行排序的。上面用key指定的用哪个元素排序。这种方法也可以用于类:

    class Student(object):
    	def __init__(self,name, age, weight):
    		self.age = age
    		self.name = name
    		self.weight = weight
    	def __repr__(self):
    		return repr((self.name,+self.age,self.weight))
    instance = [Student('Lily',20,55),Student('Mike',21,78),Student('Aan',20,45)]
    # 默认按照第一个属性姓名排序
    print sorted(instance)    # [('Aan', 20, 45), ('Mike', 21, 78), ('Lily', 20, 55)]
    # 指定按照age来排序
    print sorted(instance,key = lambda element:element.age) #[('Lily', 20, 55), ('Aan', 20, 45), ('Mike', 21, 78)]
    # 先按照 sge,再按照weight来排序
    print sorted(instance,key = lambda element:(element.age,element.weight))
    # [('Aan', 20, 45), ('Lily', 20, 55), ('Mike', 21, 78)]
    

    3)cmp 参数

    cmp参数和其他语言类似,cm效率没有key高,在puthon 3中已被移除

    4) reverse 参数

    reverse 参数默认为升序,当设置它为True时,即为降序。

    l = [2,5,1,0,2,7,1]
    print sorted(l)                # [0, 1, 1, 2, 2, 5, 7]
    print sorted(l,reverse = True) # [7, 5, 2, 2, 1, 1, 0]
  • 相关阅读:
    TortoiseGit 连接oschina不用每次输入用户名和密码的方法
    IIS7 配置SSL 绑定主机头
    二种方法安装卸载Windows服务的命令
    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
    SQL Server 2008 角色
    sql2008“备份集中的数据库备份与现有的xx数据库不同”解决方法
    winform窗体间传值
    C#用到的一些代码汇总,后期再整理
    排球计分程序中英文切换
    ASP.NET MVC 排球计分程序 (八)排球计分程序的演示
  • 原文地址:https://www.cnblogs.com/td15980891505/p/5979768.html
Copyright © 2011-2022 走看看