Python排序指南:list.sort()与sorted()的使用
需积分: 5 177 浏览量
更新于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中处理排序问题的开发者都非常有价值,无论你是新手还是经验丰富的程序员,都能从中受益。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-07-02 上传
2019-10-25 上传
2013-01-16 上传
2021-01-15 上传
2008-11-13 上传
2008-04-16 上传