Python排序指南:list.sort()与sorted()的使用
需积分: 5 165 浏览量
更新于2024-08-26
收藏 187KB PDF 举报
"howto-sorting.pdf"
这篇文档是关于如何在Python中进行排序的指南,由Guido van Rossum和Python开发团队编写。文档涵盖了多种排序技术和策略,适用于不同场景和数据类型。
1. 基本排序
Python提供了两种基本的排序方式:内置的`list.sort()`方法和`sorted()`函数。`sorted()`函数可以对任何可迭代对象创建一个新的已排序列表,而`list.sort()`方法则直接在原地对列表进行排序,不返回结果。在效率上,如果不需要保留原始列表,`list.sort()`更为高效,因为它不会创建新的列表。`list.sort()`仅适用于列表,而`sorted()`可应用于所有可迭代对象。
示例:
```python
# 使用sorted()函数
sorted_list = sorted([5, 2, 3, 1, 4]) # 返回[1, 2, 3, 4, 5]
# 使用list.sort()方法
a = [5, 2, 3, 1, 4]
a.sort() # a现在变为[1, 2, 3, 4, 5]
```
2. 关键函数
`list.sort()`和`sorted()`都支持`key`参数,可以指定一个函数来处理每个列表元素,生成用于比较的键。这在处理复杂数据类型时特别有用,例如,对字符串进行不区分大小写的排序:
```python
# 不区分大小写的字符串排序
words = "ThisisateststringfromAndrew".split()
sorted_words = sorted(words, key=str.lower) # ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
```
3. Operator模块函数
Python的`operator`模块提供了一系列函数,如`itemgetter`, `attrgetter`等,用于获取对象的特定属性或元素,常用于`key`参数中,以基于特定字段对复杂对象排序。
4. 升序和降序
默认情况下,排序是升序(从小到大)。若要进行降序排序,可以使用`reverse=True`参数:
```python
# 降序排序
sorted_numbers = sorted([5, 2, 3, 1, 4], reverse=True) # 返回[5, 4, 3, 2, 1]
```
5. 排序稳定性和排序复杂度
Python的`list.sort()`和`sorted()`都是稳定的排序算法,意味着相等的元素的相对顺序在排序后保持不变。它们的时间复杂度通常是O(n log n),在最坏的情况下仍保持高效。
6. 使用装饰-排序-去装饰的旧方法
这是一种处理复杂对象排序的旧方法,先使用`lambda`或其他函数创建临时表示,再进行排序,最后去掉装饰。
7. 使用cmp参数的旧方法
在Python 2.x中,`list.sort()`和`sorted()`接受`cmp`参数,用户可以自定义比较函数。但在Python 3.x中,这个参数已被移除,取而代之的是使用`key`参数。
8. 其它
文档还可能包括更多高级排序技术,如自定义排序类、多级排序等。
这个指南对于任何需要在Python中处理排序问题的开发者都非常有价值,无论你是新手还是经验丰富的程序员,都能从中受益。
2021-01-15 上传
2019-02-12 上传
2024-07-02 上传
2019-10-25 上传
2008-11-13 上传
2008-04-16 上传
2019-08-18 上传
2011-06-02 上传
2014-06-05 上传
殊毅
- 粉丝: 31
- 资源: 27
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明