本篇我们介绍如何使用列表的 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()方法相关推荐

  1. Python入门教程,30分钟玩转Python编程!

    这是本文的目录 前言 Python环境下载和配置 常用IDE--PyCharm 常用IDE--Anaconda Python操作入门 Python基本操作 Python注释 Python的行与缩进 多 ...

  2. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型

    学习目标 了解魔法世界中可更改容器--变量 了解魔法世界的基本数值类型--字符串.整数 了解魔法百宝箱--字典.列表 了解列表如何添加值 了解字典如何添加值 了解字典与列表定义的不同符号 目录 第一篇 ...

  3. Python入门教程详解

    Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...

  4. python语言入门教程-菜鸟学Python入门教程大盘点|7个多月的心血总结

    原标题:菜鸟学Python入门教程大盘点|7个多月的心血总结 阅读本文大概需要5分钟 菜鸟学python已经写了70几篇,入门的教程已经快写完了,我把入门的文章整理了一下,下面是入门篇的一些总结,也是 ...

  5. python3入门与进阶笔记_16_变量进阶 — 黑马程序员《Python入门教程完整版》笔记...

    变量进阶(理解) - 黑马程序员<Python入门教程完整版>笔记 目标变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用变量 和 数据 都是保存在 内存 中的 在 Py ...

  6. Linux Capabilities 入门教程--进阶实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  7. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木

    学习目标 了解魔法积木的使用--自定义函数 了解魔法积木的结果反馈--自定义函数返回值 了解魔法积木的原料传递--自定义函数传参 了解魔法积木的类型分类--类与对象 推荐 1.<备受好评的看得懂 ...

  8. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大

    学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...

  9. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

    学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...

最新文章

  1. React Native 0.50版本新功能简介
  2. MySQL8.0 · 优化器新特性 · Cost Model, 直方图及优化器开销优化
  3. 操作系统【三】内存管理基础+连续内存分配
  4. Swift 5新特性详解:ABI 稳定终于来了!
  5. 因未交赎金,世界航天巨头机密文档遭勒索软件公开
  6. CCF201612-1 中间数(解法三)(100分)(废除!!!)
  7. 怎样让jquery mobile 的footer/header 固定?
  8. 2PC 二阶段提交协议与3PC
  9. node.js安装详细教程
  10. 活动喵怎么用?定向寻宝活动设计思路和实操(附2019最新教程)
  11. 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT
  12. 流程图与算法_流程图与算法之间的区别
  13. 《传统相声开场小唱》
  14. 2020牛客暑期多校训练营(第八场)A.All-Star Game(线段树+带撤销并查集)
  15. Code Composer Studio设置断点,并不能停在断点的解决办法
  16. 秃鹫:我吃东西也是分国家的
  17. python 多态 知乎_Python鸭子类型和多态
  18. 微信头像失效_微信头像地址失效踩坑记附带方案
  19. Lombok使用@Data的大坑,空指针错误
  20. C++ 实现Handler机制

热门文章

  1. python数字黑洞_黑洞代理PYthon操作应用教学
  2. Steam流的常用操作
  3. python实现word批注 pandoc和pypandoc
  4. [饥荒联机版模组]修改制作栏中的合成物品时的需要资源和其它相关技巧
  5. 批处理bat万能删除文件/夹
  6. 华为荣耀x1铃声设置教程!
  7. Android中ANR是什么,【Android】应用ANR分析
  8. Linux系统编程一:时间和延时、gmtime和local函数返回相同
  9. 关于DataGrid的一点基础东西
  10. 希尔顿旗下康莱德酒店及度假村品牌亮相天津