Python中的排序方法
1 list.sort
list.sort(key=None, reverse=False)
该方法只能用于list。就地排序,原来的list被修改。key的用法见下文。reverse控制降序还是生序,默认是升序(key为None的前提下。如果key指定了顺序,则reverse=True时采取相反顺序)
print(a)
a.sort()
print(a)
a.sort(reverse=True)
print(a)
输出如下:
[4, 6, 1, 234, 87]
[1, 4, 6, 87, 234]
[234, 87, 6, 4, 1]
2 sorted()
sorted(iterable, *, key=None, reverse=False)
该方法适用于一切可迭代的对象。返回一个新的排好序的列表。该排序是稳定排序。
a = [4, 6, 1, 234, 87]
print(a)
print(sorted(a))
输出
[4, 6, 1, 234, 87]
[1, 4, 6, 87, 234]
3 key
现在详细说下参数key
key必须是个函数,且是接受一个参数的函数。返回key,作为排序时的比较对象。
比如:key=str.lower
下面这个对元组排序
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
print(sorted(student_tuples, key=lambda student: student[2]) )
根据元组中第3个元素进行比较,结果是:
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
对类对象的排序
class Student:
def __init__(self, name, grade, age):
self.name = name
self.grade = grade
self.age = age
def __repr__(self):
return repr((self.name, self.grade, self.age))
student_objects = [
Student('john', 'A', 15),
Student('jane', 'B', 12),
Student('dave', 'B', 10),
]
print(sorted(student_objects, key=lambda student: student.age))
结果: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
4 operator 提供的便捷方法##
改写上面的例子
from operator import itemgetter, attrgetter
sorted(student_tuples, key=itemgetter(2))
sorted(student_objects, key=attrgetter('age'))
根据多个值排序(比如先根据成绩排序,成绩一样的再根据年龄排序)
sorted(student_tuples, key=itemgetter(1,2))
sorted(student_objects, key=attrgetter('grade', 'age'))
最后一个例子:
students = ['dave', 'john', 'jane']
newgrades = {'john': 'F', 'jane':'A', 'dave': 'C'}
print(sorted(students, key=newgrades.__getitem__))
结果: ['jane', 'dave', 'john']
Python中的排序方法的更多相关文章
- Python中的排序方法sort(),sorted(),argsort()等
python 列表排序方法sort.sorted技巧篇 转自https://www.cnblogs.com/whaben/p/6495702.html,学习参考. Python list内置sort( ...
- Python中经典排序方法
数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法. 首先,排序方法可以大体分为插入排序.选择排序.交换排序.归并排序和桶排序四大类,其中,插入排序又分为 ...
- python不使用系统库中的排序方法判断一个数组是否是有序数组
2. 给定一组整数, 已知其每两个数都互不相同,判断这些数字是否能排成一个有序的数组? 例:li = [1,3,4,2] 是有续的 可以排序为li =[1,2,3,4] li = [2,4,6,8] ...
- python中的sort方法
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- python中的sort方法使用详解
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- python中字典排序,列表中的字典排序
python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...
- Python中的__new__()方法与实例化
@Python中的__new__()方法与实例化 __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...
- python中的replace()方法的使用
python中的replace()方法的使用 需求是这样的:需要将字符串的某些字符替换成其他字符 str.replace(old,new,max) 第一个参数是要进行更换的旧字符,第二个参数是新的子串 ...
- Python中的字符串方法
Python中的字符串方法 字符串类即str提供了许多有用的方法来操纵字符串.具体来说,我们将讨论如下的方法. 搜索字符串内的子字符串. 测试字符串. 格式字符串. 转换字符串. 回顾前面的章节,方法 ...
随机推荐
- jQuery的DOM操作之捕获和设置
.html()--获取或设置目标元素内的全部内容,包括html的标签及属性在内: .text()--仅获取或设置目标元素内的文本内容. .val()--获取输入框的值: .attr()--获取或设置目 ...
- 玩转单元測试之DBUnit
本文同一时候发表在:http://www.cnblogs.com/wade-xu/p/4547381.html DBunit 是一种扩展于JUnit的数据库驱动測试框架,它使数据库在測试过程之间处于一 ...
- java多线程之 ---- 线程死锁
java多线程之线程死锁 产生死锁的主要原因: 由于系统资源不足. 进程执行推进的顺序不合适. 资源分配不当等. 假设系统资源充足.进程的资源请求都可以得到满足,死锁出现的可能性就非常低.否则就会因争 ...
- Deferred Rendering(二)G-Buffer的组织
先来看一张网上广为流传的<杀戮地带2>典型的Deferred Shading的G-Buffer组织: 这里补充解释下几个点: 不存Position,而由depth和屏幕像素坐标反推出来.參 ...
- 深入浅出Hibernate(二)多对一关系映射
学习Hibernate是为了更方便的操作数据库,在数据库中的关系模型中存在多对一的关系,比方下图所看到的的员工和部门之间的关系,那么这样的关系在Hibernate中怎样映射呢?让我用一个小Demo来具 ...
- a high-level neural networks AP
Keras Documentation https://keras.io/ You have just found Keras. Keras is a high-level neural networ ...
- SSDP 抓包
简单服务发现协议(SSDP,Simple Service Discovery Protocol)
- Java中try,catch,finally的用法
Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch 运行流程:运行到try ...
- 移动端html touch事件
诸如智能手机和平板电脑一类的移动设备通常会有一(capacitive touch-sensitivescreen),以捕捉用户的手指所做的交互.随着移动网络的发展,其能够支持越来越复杂的应用,web开 ...
- 使用docsify并定制以使它更强大
背景 经常在网上看到一些排版非常漂亮的技术手册,左边有目录栏,右边是Markdown格式的文档,整个配色都十分舒服,就像一本书一样,一看就很让人喜欢.就比如Markdown Preview Enhan ...