前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python中列表的排序方法操作总结分享

python中列表的排序方法操作总结分享

原创
作者头像
我叫什么好
发布于 2022-01-08 06:55:44
发布于 2022-01-08 06:55:44
80100
代码可运行
举报
文章被收录于专栏:Python1.0Python1.0
运行总次数:0
代码可运行

python列表排序

简单记一下python中List的sort方法(或者sorted内建函数)的用法。

关键字:

python列表排序 python字典排序 sorted

List的元素可以是各种东西,字符串,字典,自己定义的类等。

sorted函数用法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sorted(data, cmp=None, key=None, reverse=False)

其中,data是待排序数据,可以使List或者iterator, cmp和key都是函数,这两个函数作用与data的元素上产生一个结果,sorted方法根据这个结果来排序。

cmp(e1, e2)是带两个参数的比较函数,返回值:负数: e1 < e2, 0: e1 == e2,正数: e1 > e2.默认为 None,即用内建的比较函数.

key 是带一个参数的函数,用来为每个元素提取比较值.默认为 None,即直接比较每个元素.

通常, key 和 reverse 比 cmp 快很多,因为对每个元素它们只处理一次;而 cmp 会处理多次.

通过例子来说明sorted的用法:

1.对由tuple组成的List排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
students =[(‘john’,A,15),(‘jane’,B,12),(‘dave’,B,10),]

用key函数排序(lambda的用法见注释1)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sorted(students, key=lambda student : student[2])# sort by age
[(‘dave’,B,10),(‘jane’,B,12),(‘john’,A,15)]

用cmp函数排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sorted(students, cmp=lambda x,y : cmp(x[2], y[2]))# sort by age
[(‘dave’,B,10),(‘jane’,B,12),(‘john’,A,15)]

用 operator 函数来加快速度,上面排序等价于:(itemgetter的用法见注释2)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from operator import itemgetter, attrgette
sorted(students, key=itemgetter(2))

用 operator 函数进行多级排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sorted(students, key=itemgetter(1,2))# sort by grade then by age
[(‘john’,A,15),(‘dave’,B,10),(‘jane’,B,12)]

2.对由字典排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
d ={‘data1’:3,‘data2’:1,‘data3’:2,‘data4’:4}
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[(‘data4’,4),(‘data1’,3),(‘data3’,2),(‘data2’,1)]

本次分享就到这了~点个关注再走吧,感谢阅读~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
创建 Observable
在 RxJS 中为我们提供了很多创建 Observable 对象的方法,其中 create 是最基本的方法。它是 Observable 类的静态属性 —— static create: Function,也是创建 Observable 对象的工厂方法。
阿宝哥
2019/11/05
1.1K0
RxJS 入门到搬砖 之 Observable 和 Observer
如,下面是一个 Observable,它在订阅时立即(同步)推送值 1、2、3,并且从 subscribe 调用开始后过 1 s 再推送值 4,然后结束。
Cellinlab
2023/05/17
7930
深入浅出 RxJS 之 创建数据流
所谓创建类操作符,就是一些能够创造出一个 Observable 对象的方法,所谓“创造”,并不只是说返回一个 Observable 对象,因为任何一个操作符都会返回 Observable 对象,这里所说的创造,是指这些操作符不依赖于其他 Observable 对象,这些操作符可以凭空或者根据其他数据源创造出一个 Observable 对象。
Cellinlab
2023/05/17
2.4K0
深入浅出 RxJS 之 创建数据流
Rxjs入门
Rxjs英文官网域名已经变为 https://rxjs-dev.firebaseapp.com/
lilugirl
2019/05/28
1.1K0
Rxjs入门
RxJS 入门到搬砖 之 Subscription 和 Subject
什么是 Subscription? Subscription 是一个表示一次性资源的对象,通常是 Observable 的执行。Subscription 有一个重要的方法 unsubscribe,不接受任何参数,只是释放 Subcription 持有的资源。在之前的 RxJS 中,Subscription 被称为 Disposable。
Cellinlab
2023/05/17
9360
[译]Rxjs&Angular-退订可观察对象的n种方式
在angular项目中我们不可避免的要使用RxJS可观察对象(Observables)来进行订阅(Subscribe)和退订(Unsubscribe)操作;
laggage
2021/02/05
1.2K0
[译]Rxjs&Angular-退订可观察对象的n种方式
Rx.js 入门笔记
基本概念 Observable 可观察者, 生产数据 Observer 观察者, 消费数据 Subscription 订阅/可清理对象, 用以清理资源或中断Observeable执行 Subject 多播主体, 向多个订阅者广播数据 Operators 操作符, 处理数据的函数 数据获取方式, 推送/拉取 数据的获取方式,表示了数据生产者和数据消费者之间的通信关系 拉取: 由消费者控制何时获取数据, 例如:请求状态管理器中的状态指 推送: 有生产者控制何时获取数据, 例如:向服务器请求数据 可观察者 Obs
copy_left
2019/08/21
2.9K0
80 行代码实现简易 RxJS
RxJS 是一个响应式的库,它接收从事件源发出的一个个事件,经过处理管道的层层处理之后,传入最终的接收者,这个处理管道是由操作符组成的,开发者只需要选择和组合操作符就能完成各种异步逻辑,极大简化了异步编程。除此以外,RxJS 的设计还遵循了函数式、流的理念。
神说要有光zxg
2022/03/03
1.3K0
80 行代码实现简易 RxJS
RxJS教程
拉取? 由消费者来决定何时从生产者那接收数据,生产者本身不知道数据何时交付到消费者手中的。
全栈程序员站长
2022/06/29
1.8K0
RxJS:给你如丝一般顺滑的编程体验(建议收藏)
怀着对于RxJS这项技术的好奇,笔者花了数天时间研究了这项技术,并肝了一包枸杞才完成这篇文章的撰写,属实不易。不过也正是通过这段时间的学习,我发现这项技术在一定程度上可以解决我在日常业务中遇到的一些痛点,以及有种想马上应用到自己的新项目中的欲望,的确这种以数据流的理念来管控大型项目中的数据能给人带来一种十分优雅的编程体验。
前端达人
2021/01/27
7.3K1
RxJS:给你如丝一般顺滑的编程体验(建议收藏)
RxJS 入门到搬砖 之 基础介绍
RxJS 是一个使用 observable 序列整合 异步和基于事件的程序 的 JavaScript 库。为了更好地处理事件序列,RxJS 结合了观察者模式与迭代器模式和函数式编程与集合。
Cellinlab
2023/05/17
5700
5. 创建 Observable
使用 RxJS 的话,创建一个 observable 来代替(基于最新的Rxjs6版本写法)
mafeifan
2018/12/27
7880
RxJS -- Subscription
Subscription是什么? 当subscribe一个observable的时候, 返回的就是一个subscription. 它是一个一次性对象(disposable), 它有一个非常重要的方法
solenovex
2018/03/29
9850
RxJS -- Subscription
3 分钟温故知新 RxJS 【创建实例操作符】
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
掘金安东尼
2022/09/19
6340
3 分钟温故知新 RxJS 【创建实例操作符】
Rxjs光速入门0. 前言1. Observable2. 产生数据源3. Hot & Cold Observable5. 操作符6. 弹珠图7. Subject总结
Rx指的是响应式编程的实践工具扩展——reactive extension,编程风格是响应式编程+函数式编程。Rxjs则是这种模式的js的实现,处理异步能力优秀,将异步操作抽象为时间轴上的点。既可以当作像lodash那样的工具库来用,也可以用来统一管理数据流,他的出现解决了一些问题:
lhyt
2018/10/31
9670
Rxjs光速入门0. 前言1. Observable2. 产生数据源3. Hot  & Cold Observable5. 操作符6. 弹珠图7. Subject总结
Rxjs源码解析(一)Observable
通过 new Observable() 方法创建了一个可观察对象 observable,然后通过 subscribe 方法订阅这个observable,订阅的时候会执行在 new Observable时候传入的函数参数,那么就来看下 new Observable到底做了什么
阿珍
2022/07/01
1.7K0
RxJS 学习系列 14. Subject 基本概念
终于进到了 RxJS 的第二个重点 Subject,不知道读者们有没有发现? 我们在这篇文章之前的范例,每个 observable 都只订阅了一次,而实际上 observable 是可以多次订阅的
mafeifan
2019/05/15
8480
你会用RxJS吗?【初识 RxJS中的Observable和Observer】
可以看到,我们用到了scan操作符,该操作符的工作方式和数组的reduce类似,回调函数接收一个值, 回调的返回值作为下一次回调运行暴露的一个值。
科技新语
2022/08/17
1.4K0
Angular进阶教程2-<依赖注入+RxJS>
组件\color{#0abb3c}{组件}组件不应该直接获取或保存数据,它们应该聚焦于展示数据,而把数据访问和处理的职责委托给某个服务\color{#0abb3c}{服务}服务。那面对组件和服务之间的关系,该如何处理他们之间的依赖关系呢?Angular就引入了依赖注入框架\color{#0abb3c}{依赖注入框架}依赖注入框架去解决这件事情。
玖柒的小窝
2021/12/08
4.2K0
Angular进阶教程2-<依赖注入+RxJS>
RxJS & React-Observables 硬核入门指南
Redux-observable是一个基于rxjs的Redux中间件,允许开发者使用异步操作。它是redux-thunk和redux-saga的替代品。
前端修罗场
2022/07/29
6.9K0
RxJS & React-Observables 硬核入门指南
推荐阅读
相关推荐
创建 Observable
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文