sort与sorted区别
时间: 2024-09-05 08:02:09 浏览: 42
Python中的 sort 和 sorted的用法与区别
`sort()` 和 `sorted()` 都是 Python 中用于对序列进行排序的方法,它们的主要区别在于:
1. **作用域**:
- `sort()` 是列表(List)对象的一个方法,它直接修改原列表的顺序,适用于已经存在的列表。
```python
numbers = [3, 1, 4, 1, 5, 9]
numbers.sort()
print(numbers) # 输出:[1, 1, 3, 4, 5, 9]
```
如果你在一个不允许修改的容器上调用 `sort()`,你会收到错误。
- `sorted()` 函数则是 Python 内置的全称,它可以接受任何可迭代的对象(如列表、元组等),返回一个新的已排序的列表,不会改变原始数据。
```python
numbers = [3, 1, 4, 1, 5, 9]
new_numbers = sorted(numbers)
print(new_numbers) # 输出:[1, 1, 3, 4, 5, 9]
numbers # 仍然保持原样
```
2. **灵活性**:
- `sorted()` 支持更多的排序选项,比如提供自定义的关键字(key)、reverse 参数等,能实现更复杂的排序规则。
```python
words = ['apple', 'banana', 'cherry']
sorted_words = sorted(words, key=len)
print(sorted_words) # 输出:['apple', 'cherry', 'banana']
```
3. **异常处理**:
- 如果有非可比较类型的元素,`sort()` 可能会抛出 TypeError。
- `sorted()` 则可以处理这种情况,会忽略无法排序的元素。
总之,如果你想要保持原有的列表不变并且需要更多的排序选项,选择 `sorted()`;如果希望就地操作并只关心简洁性,那么 `sort()` 是更好的选择。
阅读全文