在 Python 编程中,`sorted()` 是一个非常实用且强大的内置函数,用于对可迭代对象进行排序操作。无论是处理列表、元组还是字典,`sorted()` 都能提供灵活且高效的排序解决方案。本文将详细介绍 `sorted()` 的基本用法及其高级特性。
基本语法
`sorted(iterable, key=None, reverse=False)`
- iterable:需要排序的可迭代对象,如列表、元组等。
- key:指定一个函数,用于从每个元素中提取一个值以决定排序顺序。例如,可以使用 `str.lower` 来忽略大小写排序。
- reverse:布尔值,默认为 `False`,表示是否按降序排序。
示例应用
排序列表
```python
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers) 输出: [1, 2, 5, 9]
```
忽略大小写排序字符串
```python
words = ["apple", "Banana", "cherry"]
sorted_words = sorted(words, key=str.lower)
print(sorted_words) 输出: ['apple', 'Banana', 'cherry']
```
按长度排序
```python
words = ["cat", "dog", "elephant"]
sorted_by_length = sorted(words, key=len)
print(sorted_by_length) 输出: ['cat', 'dog', 'elephant']
```
降序排序
```python
numbers = [3, 8, 1, 4]
sorted_desc = sorted(numbers, reverse=True)
print(sorted_desc) 输出: [8, 4, 3, 1]
```
高级特性
`sorted()` 不仅限于简单的数字或字符串排序,还可以处理更复杂的数据结构,如字典和嵌套列表。
对字典排序
```python
data = {"b": 2, "a": 1, "c": 3}
sorted_data = sorted(data.items(), key=lambda x: x[0]) 按键排序
print(dict(sorted_data)) 输出: {'a': 1, 'b': 2, 'c': 3}
```
多级排序
```python
people = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 25}
]
先按年龄排序,再按名字排序
sorted_people = sorted(people, key=lambda x: (x['age'], x['name']))
print(sorted_people)
```
注意事项
1. 原地修改 vs 返回新列表:`sorted()` 不会修改原始数据,而是返回一个新的排序后的列表。如果需要原地修改,可以使用列表的 `.sort()` 方法。
2. 性能优化:对于大型数据集,考虑使用 `sorted()` 并结合 `key` 参数来减少不必要的计算开销。
通过以上介绍,我们可以看到 `sorted()` 函数在 Python 编程中的重要性和灵活性。无论是初学者还是有经验的开发者,都能从中受益匪浅。希望本文能帮助你更好地掌握这一工具!