Python编程中sort()方法与sorted()函数详解200


Python 提供了两种强大的排序方法:`sort()` 方法和 `sorted()` 函数。它们都能对序列(例如列表、元组)进行排序,但使用方法和返回值有所不同,理解它们的区别对于高效地编写 Python 代码至关重要。本文将详细讲解 `sort()` 方法和 `sorted()` 函数的用法,并通过丰富的示例来帮助读者掌握这些技巧。

一、sort() 方法

`sort()` 方法是列表对象的一个内置方法,它直接对列表进行排序,并修改列表本身。这意味着调用 `sort()` 后,原始列表将被排序,而不会返回新的排序后的列表。它的语法非常简洁:```python
(key=None, reverse=False)
```

其中:
key:一个可选参数,它是一个函数,用于指定排序的依据。这个函数会作用于列表中的每个元素,并返回一个用于比较的值。例如,如果要按字符串长度排序,可以将 `key=len` 传递给 `sort()`。
reverse:一个可选布尔参数,用于指定排序顺序。如果为 `True`,则降序排序;如果为 `False`(默认值),则升序排序。

让我们来看一些例子:```python
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
() # 升序排序
print(numbers) # 输出:[1, 1, 2, 3, 4, 5, 6, 9]
(reverse=True) # 降序排序
print(numbers) # 输出:[9, 6, 5, 4, 3, 2, 1, 1]
words = ["banana", "apple", "orange", "grape"]
() # 按字母顺序升序排序
print(words) # 输出:['apple', 'banana', 'grape', 'orange']
(key=len) # 按字符串长度升序排序
print(words) # 输出:['grape', 'apple', 'banana', 'orange']
#自定义排序规则
points = [(1, 2), (4, 1), (3, 3)]
(key=lambda point: point[1]) # 按第二个元素排序
print(points) # 输出:[(4, 1), (1, 2), (3, 3)]
```

需要注意的是,`sort()` 方法只能用于列表,不能用于其他序列类型,例如元组。尝试对元组使用 `sort()` 方法会抛出 `AttributeError` 异常。

二、sorted() 函数

`sorted()` 函数是一个内置函数,它可以对任何可迭代对象进行排序,并返回一个新的排序后的列表。原始的可迭代对象不会被修改。它的语法如下:```python
sorted(iterable, key=None, reverse=False)
```

其中:
iterable:要排序的可迭代对象,例如列表、元组、字符串等。
key:与 `sort()` 方法中的 `key` 参数相同,用于指定排序的依据。
reverse:与 `sort()` 方法中的 `reverse` 参数相同,用于指定排序顺序。


让我们来看一些例子:```python
numbers = (3, 1, 4, 1, 5, 9, 2, 6)
sorted_numbers = sorted(numbers) # 升序排序
print(sorted_numbers) # 输出:[1, 1, 2, 3, 4, 5, 6, 9]
print(numbers) # 输出:(3, 1, 4, 1, 5, 9, 2, 6) 原始元组未改变

words = "banana apple orange grape".split()
sorted_words = sorted(words, key=len, reverse=True) #按长度降序排序
print(sorted_words) # 输出:['banana', 'orange', 'apple', 'grape']

#对字典排序 (排序的是键)
my_dict = {'apple': 5, 'banana': 2, 'orange': 8}
sorted_keys = sorted(my_dict)
print(sorted_keys) # 输出:['apple', 'banana', 'orange']
sorted_items = sorted((), key=lambda item: item[1]) #按值排序
print(sorted_items) # 输出:[('banana', 2), ('apple', 5), ('orange', 8)]
```

从例子可以看出,`sorted()` 函数可以处理各种可迭代对象,并且不会修改原始对象,这使得它在许多情况下比 `sort()` 方法更灵活和安全。

三、sort() 与 sorted() 的选择

选择 `sort()` 方法还是 `sorted()` 函数取决于你的具体需求:
如果需要直接修改列表,并且不需要返回新的列表,则使用 `sort()` 方法。
如果需要保持原始序列不变,或者需要对非列表类型的序列进行排序,则使用 `sorted()` 函数。


总而言之,`sort()` 和 `sorted()` 是 Python 中非常重要的排序工具,熟练掌握它们的使用方法对于编写高效、简洁的 Python 代码至关重要。 通过理解它们的区别和应用场景,你可以更好地应对各种排序任务,提高编程效率。

2025-03-22


上一篇:成都少儿Python编程学习:趣味启蒙与未来发展

下一篇:Python数据可视化:用Matplotlib和Seaborn绘制炫酷图表