python中的sort和sorted是什么意思_python中sort和sorted的另类用法
排序应该是处理list列表经常用到的方法,常用的就是sort和sorted。
一、两者的差异
1、list.sort()是list是内建方法,使用sort会直接改变原列表的顺序,而sorted(list)只会返回一个已排好序的列表,如下:
1 >>> a = ['a1', 'a2', 'a3', 'a11', 'a21']2 >>>a.sort()3 >>>a4 ['a1', 'a11', 'a2', 'a21', 'a3']5 >>> b = ['b1', 'b2', 'b3', 'b11', 'b21']6 >>>sorted(b)7 ['b1', 'b11', 'b2', 'b21', 'b3']8 >>>b9 ['b1', 'b2', 'b3', 'b11', 'b21']
2、sorted()可用于任何一个可迭代的对象,比如:
>>>members
[('Mark', 30, 12000), ('John', 24, 6000), ('Tim', 27, 8000), ('David', 26, 10000)]>>>sorted(members)
[('David', 26, 10000), ('John', 24, 6000), ('Mark', 30, 12000), ('Tim', 27, 8000)]
sorted首先选择了每个成员的第一个变量进行了排序。
二、实用的操作
sort()方法和sorted()函数都内置了一个key参数,用与在进行比较前指定每个元素上要调用的函数。这里就可以脑洞大开了。
1、大部分情况下,我们并不想看到类似下面这种排序:
1 >>>sorted(b)2 ['b1', 'b11', 'b2', 'b21', 'b3']
这是默认以字符进行排序的,而我们期望的结果往往是类似于['b1', 'b2', 'b3', 'b11', 'b21']的自然排序结果。这里就可以用key来调整。
1 >>> sorted(b, key=lambda n : int(n[1:]))2 ['b1', 'b2', 'b3', 'b11', 'b21']3 >>> sorted(b, key=lambda n : int(n[1:]), reverse=True)4 ['b21', 'b11', 'b3', 'b2', 'b1']
排序将按整数的大小进行,也可以加入reverse来控制逆序。
2、key也可用来控制排序的对象
>>>members
[('Mark', 30, 12000), ('John', 24, 6000), ('Tim', 27, 8000), ('David', 26, 10000)]>>>sorted(members)
[('David', 26, 10000), ('John', 24, 6000), ('Mark', 30, 12000), ('Tim', 27, 8000)]>>> sorted(members, key=lambda n: n[2])
[('John', 24, 6000), ('Tim', 27, 8000), ('David', 26, 10000), ('Mark', 30, 12000)]
上例就是按收入(成员第3项)进行排序的。也可以先按年龄,再按收入进行排序:
>>> sorted(members, key=lambda n: (n[1], n[2]))
[('John', 24, 6000), ('David', 26, 10000), ('Tim', 27, 8000), ('Mark', 30, 12000)]
3、最骚气的当然是引入一些内库了,比如operator模块
operator.itemgetter() 通过下标
operator.attrgetter() 通过参数
这里只举个简单的例子,有兴趣的话可以去搜一搜具体的操作方法。
1 >>> from operator importitemgetter, attrgetter2 >>> sorted(members, key=itemgetter(1))3 [('John', 24, 6000), ('David', 26, 10000), ('Tim', 27, 8000), ('Mark', 30, 12000)]
python中的sort和sorted是什么意思_python中sort和sorted的另类用法相关推荐
- python中sorted函数逆序_Python中sorted函数的用法(转)
[Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返 ...
- 编写python程序、创建名为class的数据库_Python中的元类(metaclass)以及元类实现单例模式...
一.理解类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在P ...
- 在python中、对于函数定义代码的理解_python中如何理解装饰器代码?
长文预警,[最浅显易懂的装饰器讲解] 能不能专业地复制题目?配上代码,问题分段. 我来给提主配上问题的代码. 正式回答: 1:如何理解return一个函数,它与return一个值得用法区别在哪? 敲黑 ...
- python函数def里面嵌套def_python 函数嵌套函数_Python中的嵌套函数
python 函数嵌套函数 A nested function is simply a function within another function, and is sometimes calle ...
- python中与label类似的控件是_python中tkinter的使用(控件整理)(一)
1.使用tkinter.Tk() 生成主窗口(window=tkinter.Tk()): window.title('标题名')修改框体的名字,也可在创建时使用className参数来命名: wind ...
- python中sorted函数的作用_Python中排序方法sort、函数sorted的key参数的作用分析
从Python2.4开始,list.sort方法 和 sorted方法 都增加了一个 'key' 参数用来在进行比较之前指定每个列表元素上要调用的函数,将函数的返回值作为比较的依据. 那么怎么使用这个 ...
- python中的sorted是什么意思_python中sort与sorted区别
1.sort()函数 (只对list有用) sort(...) L.sort(key = None,reverse=False) key = 函数 这个函数会从每个元素中提取一个用于比较的关键字.默认 ...
- python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)
列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助. 注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮 ...
- python数据类型有哪些、分别有什么用途_python中的数据类型有哪些
python中的数据类型有9种,分别是1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期. 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(') 用单 ...
- python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...
最新文章
- 软件项目管理0824:标书中疫情条款
- PHP分页的limit与offset
- 第三次学JAVA再学不好就吃翔(part113)--对象操作流
- 有关LinkedList常用方法的源码解析
- IaaS、PaaS和SaaS的区别
- [工具] CuteMarkEd
- VS调试 启动vs报错--未启动IIS
- 从头学习Drupal--基本架构三
- assemblyinstaller 无法启动计算机.上的服务,本地计算机上的Windows Search服务启动然后停止 | MOS86...
- JavaScript浮点运算的问题
- Vue如何优雅地进行事件解绑和解绑
- PS2019 常用快捷键大全
- C语言---用筛选法求100以内的素数
- cloudera安装
- Netpod Alive网络拓扑图生成、绘制有生命的网络拓扑图工具
- 组装一台台式计算机的流程,如何组装电脑?组装电脑的操作流程!
- python 安卓模拟点击_python模拟android屏幕高频点击工具
- 权力的游戏刷声望辅助【多开辅助】权力的游戏手游辅助挂机刷石油资源采集脚本
- 陆金所—稳盈-e享统计-python爬虫
- sql查询语句-平均分、最高最低分、判断、排序