python的sorted函数及使用解析
作者:问就是啥也不是 发布时间:2022-03-02 05:52:21
一、sort函数
如果对python中的列表进行排序,可以使用List类的成员函数sort,该函数会在原空间上进行操作,对列表本身进行修改,不返回副本。语法如下:
L.sort(cmp=None, key=None, reverse=False)
二、sorted函数
sorted函数就比sort函数要强大许多了,sort只能对列表进行排序,sorted可以对所有可迭代类型进行排序,并且返回新的已排序的列表。语法如下:
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
一共可接受4个参数,含义分别如下:
1.可迭代类型,例如字典、列表、
2.比较函数
3.可迭代类型中某个属性,对给定元素的每一项进行排序
4.降序或升序
三、结合使用
与sorted经常结合使用的有:
1.比较函数经常会用到lambda。
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。比如对元组组成的列表中某一项进行排序:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
sorted(students, key=lambda student : student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
2.比较函数经常会用到operator.itemgetter函数
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号。
要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
sorted函数用来排序,sorted(iterable[, cmp[, key[, reverse]]])
其中key的参数为一个函数或者lambda函数。所以itemgetter可以用来当key的参数
例如根据第二个域和第三个域进行排序
a = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=operator.itemgetter(1,2))
3.可迭代元素经常会用到items
items是字典中的一个方法,返回由元组组成的列表。
四、对字典的值进行排序
dict={'a':1,'b':2}
ans = sorted(dict.items(), key = lambda x:x[1], reverse = True)
Python中sorted()用法
sorted()函数:返回一个排序后的新序列,不改变原始序列。
我们知道,Python中列表是基本数据类型之一,是写在方括号之间,用逗号分隔开的元素序列。可以同时存在数字、字符串、元组、字典、集合等数据类型的对象,甚至可以包含列表(即嵌套),例如。[1,2,3] [a,b,c] [123,[abc]]
关于列表的常用函数,例如sorted()函数,具体用法及案例如下:
sorted(iterable[,key][,reverse])返回一个排序后的新序列,不改变原始的序列。
第一个参数interable是可迭代的对象。
第二个参数key用来指定一个带参数的函数,该函数会在每个元素排序前被调用,如key=abs #按绝对值大小排序。
key指定的函数将作用于list的每一个元素上,并根据key指定的函数返回的结果进行排序。
第三个参数reverse用来指定正向还是反向排序
如反向排序第三个参数reverse=True:
例如>>>sorted(['bcd','about','diff','create'],key=str.lower,reverse=True) #按小写反向排序
['diff','create','bcd','about']
来源:https://blog.csdn.net/bcfdsagbfcisbg/article/details/82801835


猜你喜欢
- 目录前言创建表关系多表数据操作 - 增删改一对多&一对一关系 - 增删改增加数据删除数据修改数据多对多关系 - 增删改增加多对多关系
- 主要需要pd.ExcelWriter([文件路径])方法参考官方文档:>>> writer = pd.ExcelWrite
- 一、 通过runtime包进行多核设置1.NumCPU()获取当前系统的cpu核数2.GOMAXPROCS设置当前程序运行时占用的cpu核数
- 本文实例讲述了python双向链表原理与实现方法。分享给大家供大家参考,具体如下:双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个
- 很久之前,分享过一次Python代码实现验证码识别的办法。当时采用的是pillow+pytesseract,优点是免费,较为易用。但其识别精
- 安装electroncnpm install electron -g安装electron-packagercnpm install elec
- 在实际应用过程中,只要保证选项卡模块结构代码的完整性,就可以任意添加N个同类选项卡,不需要手动在HTML里绑定事件处理程序以及给要隐藏显示的
- 对于比较长的数字组成的字符串,我们一般会用逗号(,)隔开来格式化数字,从右往左每三个数字用一个逗号分组隔开。为什么要用逗号隔开数字呢?因为当
- 免责声明:本教程所有资源均来源于网络;仅用于学习交流,请勿用于任何商业行为;如需要,请使用正版授权;侵权联删。idea官方推送了2020.2
- 一直以来,ACCESS数据库中的申报数据在分公司与总公司之间传递,用EXCEL或DBASE、TXT甚至ACCESS等格式,我总觉得不太理想。
- 关于端口复用一个套接字不能同时绑定多个端口,如果客户端想绑定端口号,一定要调用发送信息函数之前绑定( bind )端口,因为在发送信息函数(
- 译文原文:http://blog.benhuoer.com/2009/04/10-simple-and-impressive-design-
- 本文实例讲述了PHP实现通过二维数组键值获取一维键名操作。分享给大家供大家参考,具体如下:有如下既定数组:$inviteType = [ &
- 前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。是的。Golang中也有接口这玩意儿。1.为什么需要接口?多数情况下,数
- <?php//===============================时间日期=========================
- 没有使用动态语句直接报错 错误的 代码如下:alter proc testpapers as begin declare @tems nva
- 这个是python的一个内建函数,看书的时候发现了他,mark一下当我们既需要遍历索引同时需要遍历元素的时候,可以考虑使用enumerate
- 本文实例讲述了Python实现文件按照日期命名的方法。分享给大家供大家参考。具体实现方法如下:这里实现文件按照创建的时期批量重命名的功能#
- 下拉菜单平常见到的都是用js来实现的,本文介绍的方法是使用纯CSS实现导航下拉菜单功能,代码符合标准,兼容性好且环保,制作下拉菜单的不错选择
- 一.基于纹理背景的图像分割该部分主要讲解基于图像纹理信息(颜色)、边界信息(反差)和背景信息的图像分割算法。在OpenCV中,GrabCut