• 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]
  • 相关阅读:
    【Linux】- Systemd 命令篇
    【Linux】- 守护进程的启动方法
    【Linux】- CentOS安装docker及docker-compose
    【Python】- scrapy 爬取图片保存到本地、且返回保存路径
    解决百度ueditor支持iframe框架页面的视频播放问题
    php CURL 请求头和响应头获取
    phpcms pc标签 start不生效的原因
    单点登录的实现
    Linux下删除相互依赖的包
    如何通过js关闭微信浏览器页面
  • 原文地址:https://www.cnblogs.com/td15980891505/p/5979768.html
Copyright © 2020-2023  润新知