【Python入门教程】第30篇 列表sort()方法
本篇我们介绍如何使用列表的 sort() 方法对元素进行排序。
列表 sort() 方法
如果想要对列表中的元素进行排序,可以使用 sort() 方法:
list.sort()
sort() 方法执行的是原地(in place)排序,意味着它会改变列表中元素的位置。
默认情况下,sort() 方法使用小于运算符对列表元素进行排序。也就是说,更小的元素排在前面,更大的元素排在后面。
如果想要对列表元素进行从大到小排序,可以指定参数 reverse=True。例如:
list.sort(reverse=True)
列表排序示例
接下来我们看几个使用 sort() 方法排序的示例。
示例一:字符串列表排序
如果列表的元素为字符串,sort() 方法按照字母顺序进行排序。
以下示例使用 sort() 方法对列表 guests 中的元素进行排序:
guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer']
guests.sort()print(guests)
输出结果如下:
['James', 'Jennifer', 'John', 'Mary', 'Patricia', 'Robert']
下面的示例使用 sort() 方法和 reverse=True 参数对列表 guests 中的元素进行反向排序:
guests = ['James', 'Mary', 'John', 'Patricia', 'Robert', 'Jennifer']
guests.sort(reverse=True)print(guests)
输出结果如下:
['Robert', 'Patricia', 'Mary', 'John', 'Jennifer', 'James']
示例二:数字列表排序
如果列表的元素为数字,sort() 方法按照从小到大的顺序进行排序。
以下示例使用 sort() 方法对列表 scores 中的数字从小到大进行排序:
scores = [5, 7, 4, 6, 9, 8]
scores.sort()print(scores)
输出结果如下:
[4, 5, 6, 7, 8, 9]
如果想要对数字按照从大到小的顺序排序,可以使用 sort(reverse=True):
scores = [5, 7, 4, 6, 9, 8]
scores.sort(reverse=True)print(scores)
输出结果如下:
[9, 8, 7, 6, 5, 4]
示例三:元组列表排序
假如存在以下由元组构成的列表:
companies = [('Google', 2019, 134.81),('Apple', 2019, 260.2),('Facebook', 2019, 70.7)]
现在我们想要按照收入从高到低对这些公司进行排序。
首先,指定一个排序关键字并传递给 sort() 方法。为了定义排序关键字,我们可以创建一个函数,参数为元组,返回值为排序的元素:
def sort_key(company):return company[2]
以上 sort_key() 函数接收一个名为 company 的参数并返回它的第三个元素。其中,company 是一个元组(例如 (‘Google’, 2019, 134.81)),company[2] 代表了收入(例如 134.81)。
然后,将 sort_key 函数传递给 sort() 方法:
companies.sort(key=sort_key, reverse=True)
sort() 方法会使用函数 sort_key() 返回的结果进行比较。
注意,我们只需要将函数名 sort_key 传递给 sort() 方法,函数名后面没有括号。
完整的代码如下:
companies = [('Google', 2019, 134.81),('Apple', 2019, 260.2),('Facebook', 2019, 70.7)]# define a sort key
def sort_key(company):return company[2]# sort the companies by revenue
companies.sort(key=sort_key, reverse=True)# show the sorted companies
print(companies)
输出结果如下:
[('Apple', 2019, 260.2), ('Google', 2019, 134.81), ('Facebook', 2019, 70.7)]
使用 lambda 表达式
为了使代码更加精简, Python 允许定义没有名字的函数:
lambda arguments: expression
没有名字的函数被称为匿名函数,以上语句被称为 lambda 表达式。
从技术上来说,lambda 表达式等价于以下函数:
def name(arguments):return expression
以下示例使用 lambda 表达式按照收入从低到高进行排序:
companies = [('Google', 2019, 134.81),('Apple', 2019, 260.2),('Facebook', 2019, 70.7)]# sort the companies by revenue
companies.sort(key=lambda company: company[2])# show the sorted companies
print(companies)
输出结果如下:
[('Facebook', 2019, 70.7), ('Google', 2019, 134.81), ('Apple', 2019, 260.2)]
总结
- 列表的 sort() 方法用于原地排序。
- sort() 方法对字符串使用字母顺序排序,对数字从小到大进行排序。
- sort(reverse=True) 用于反向排序。
【Python入门教程】第30篇 列表sort()方法相关推荐
- Python入门教程,30分钟玩转Python编程!
这是本文的目录 前言 Python环境下载和配置 常用IDE--PyCharm 常用IDE--Anaconda Python操作入门 Python基本操作 Python注释 Python的行与缩进 多 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型
学习目标 了解魔法世界中可更改容器--变量 了解魔法世界的基本数值类型--字符串.整数 了解魔法百宝箱--字典.列表 了解列表如何添加值 了解字典如何添加值 了解字典与列表定义的不同符号 目录 第一篇 ...
- Python入门教程详解
Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...
- python语言入门教程-菜鸟学Python入门教程大盘点|7个多月的心血总结
原标题:菜鸟学Python入门教程大盘点|7个多月的心血总结 阅读本文大概需要5分钟 菜鸟学python已经写了70几篇,入门的教程已经快写完了,我把入门的文章整理了一下,下面是入门篇的一些总结,也是 ...
- python3入门与进阶笔记_16_变量进阶 — 黑马程序员《Python入门教程完整版》笔记...
变量进阶(理解) - 黑马程序员<Python入门教程完整版>笔记 目标变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用变量 和 数据 都是保存在 内存 中的 在 Py ...
- Linux Capabilities 入门教程--进阶实战篇
该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木
学习目标 了解魔法积木的使用--自定义函数 了解魔法积木的结果反馈--自定义函数返回值 了解魔法积木的原料传递--自定义函数传参 了解魔法积木的类型分类--类与对象 推荐 1.<备受好评的看得懂 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...
最新文章
- React Native 0.50版本新功能简介
- MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化
- 操作系统【三】内存管理基础+连续内存分配
- Swift 5新特性详解:ABI 稳定终于来了!
- 因未交赎金,世界航天巨头机密文档遭勒索软件公开
- CCF201612-1 中间数(解法三)(100分)(废除!!!)
- 怎样让jquery mobile 的footer/header 固定?
- 2PC 二阶段提交协议与3PC
- node.js安装详细教程
- 活动喵怎么用?定向寻宝活动设计思路和实操(附2019最新教程)
- 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT
- 流程图与算法_流程图与算法之间的区别
- 《传统相声开场小唱》
- 2020牛客暑期多校训练营(第八场)A.All-Star Game(线段树+带撤销并查集)
- Code Composer Studio设置断点,并不能停在断点的解决办法
- 秃鹫:我吃东西也是分国家的
- python 多态 知乎_Python鸭子类型和多态
- 微信头像失效_微信头像地址失效踩坑记附带方案
- Lombok使用@Data的大坑,空指针错误
- C++ 实现Handler机制