sort 与sorted使用方法
时间: 2024-03-21 14:36:23 浏览: 60
sort和sorted都是Python中用于对列表进行排序的函数。
sort是列表的一个方法,它会直接修改原列表,将其按照指定的排序规则进行排序。sort方法没有返回值,它会直接对原列表进行排序。
sorted是一个内置函数,它接受一个可迭代对象作为参数,并返回一个新的已排序的列表,原列表不会被修改。sorted函数可以接受多个参数,其中最重要的一个是key参数,用于指定排序的规则。
下面是sort和sorted的使用方法示例:
使用sort方法对列表进行排序:
```
numbers = [3, 1, 4, 2, 5]
numbers.sort()
print(numbers) # 输出:[1, 2, 3, 4, 5]
```
使用sorted函数对列表进行排序:
```
numbers = [3, 1, 4, 2, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出:[1, 2, 3, 4, 5]
print(numbers) # 输出:[3, 1, 4, 2, 5]
```
使用sorted函数并指定排序规则:
```
numbers = [3, 1, 4, 2, 5]
sorted_numbers = sorted(numbers, reverse=True) # 按降序排序
print(sorted_numbers) # 输出:[5, 4, 3, 2, 1]
```
相关问题
sort与sorted
`sort` 和 `sorted` 都是 Python 内置的排序函数,但是它们有一些不同之处。
`sort` 是列表对象的方法,用于在原地对列表进行排序,即直接修改原始列表。它没有返回值,因此不能用于赋值语句。例如:
```
lst = [3, 2, 1]
lst.sort()
print(lst) # 输出 [1, 2, 3]
```
`sorted` 是一个内置函数,用于对可迭代对象进行排序,它返回一个新的已排序的列表,原始对象不受影响。例如:
```
lst = [3, 2, 1]
new_lst = sorted(lst)
print(new_lst) # 输出 [1, 2, 3]
print(lst) # 输出 [3, 2, 1]
```
另外,`sorted` 函数可以接受多种可迭代对象作为参数,并且可以接受关键字参数,用于指定排序的方式。例如:
```
tup = (3, 2, 1)
new_tup = sorted(tup)
print(new_tup) # 输出 [1, 2, 3]
lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}]
new_lst = sorted(lst, key=lambda x: x['age'])
print(new_lst) # 输出 [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}]
```
总之,`sort` 主要用于对列表对象进行原地排序,而 `sorted` 用于对可迭代对象进行排序并返回一个新的已排序列表。
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()` 是更好的选择。
阅读全文