在Python中,`sort()` 和 `sorted()` 都是用于对数据进行排序的函数,但它们存在一些关键区别。
### 区别
- **适用对象**:`sort()` 是应用在列表(list)上的方法,仅适用于列表;而 `sorted()` 是Python内置的全局方法,可以对所有可迭代的对象进行排序操作,如字符串、元组、字典、集合等 [^1][^2]。
- **对原对象的影响**:`sort()` 是对原有列表进行操作,会直接修改原列表;而 `sorted()` 返回的是一个新的可迭代对象,不会改变原来的对象 [^1][^2]。
- **返回值**:`sort()` 没有返回值(返回 `None`),因此无法将排序结果赋给一个变量;而 `sorted()` 会返回一个新的列表,可以将结果赋给一个变量 [^4]。
- **效率**:`sort()` 更快,因为它是原地排序,无需创建新列表;`sorted()` 通常比 `sort()` 稍微慢一些,因其创建了新对象 [^2]。
- **稳定性**:两者都是稳定排序,即保持相同元素的原始顺序 [^2]。
### 用法
- **sort()**:使用方法为 `list.sort(key=None, reverse=False)`,其中 `key` 是用于指定排序规则的函数,`reverse` 为布尔值,`True` 表示降序,`False` 表示升序(默认) [^2][^3]。
- **sorted()**:使用方法为 `sorted(iterable, key=None, reverse=False)`,参数含义与 `sort()` 相同 [^2]。
### 示例
```python
# sort() 示例
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5]
lst.sort()
print("使用 sort() 排序后的列表:", lst)
# sorted() 示例
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5]
new_lst = sorted(lst)
print("原列表:", lst)
print("使用 sorted() 排序后的新列表:", new_lst)
# 对元组使用 sorted()
tup = (3, 1, 4, 1, 5, 9)
sorted_tup = sorted(tup)
print("原元组:", tup)
print("使用 sorted() 排序后的新列表:", sorted_tup)
```