python sorted底层实现
时间: 2023-11-06 09:57:05 浏览: 33
Python的sorted函数的底层实现使用了归并排序。归并排序是一种分治算法,它将列表分成两个子列表,分别对这两个子列表进行排序,然后将它们合并成一个有序列表。这个底层实现避免了Python本身附加的大量开销,因此速度比我们自己写的归并排序要快很多(10~20倍)。因此,我们在进行排序时一般会使用sorted函数。
相关问题
python sorted
`sorted` 是 Python 内置函数之一,用于对可迭代对象进行排序,返回一个新的已排序的列表。
`sorted` 函数的基本语法如下:
```python
sorted(iterable, key=None, reverse=False)
```
其中,`iterable` 表示要排序的可迭代对象,例如列表、元组、集合等。`key` 是一个可选参数,表示用于排序的关键字函数,如果不指定则按照元素的大小比较进行排序。`reverse` 也是一个可选参数,表示是否倒序排序,默认为 `False`。
例如,对一个列表进行排序:
```python
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list) # 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
也可以使用 `key` 参数指定排序方式:
```python
my_list = ['apple', 'banana', 'cherry', 'date', 'eggplant']
sorted_list = sorted(my_list, key=lambda x: len(x))
print(sorted_list) # 输出 ['date', 'apple', 'banana', 'cherry', 'eggplant']
```
上面的例子中,我们使用 lambda 表达式作为 `key`,表示按照元素的长度进行排序。
Python sorted
`sorted()` 是 Python 内置函数之一,用于对可迭代对象进行排序,返回一个新的已排序的列表。它接受一个可迭代对象作为参数,可以是列表、元组、集合、字典等。
`sorted()` 的语法如下:
```python
sorted(iterable, /, *, key=None, reverse=False)
```
其中,`iterable` 是要排序的可迭代对象;`key` 是一个可选参数,用于指定排序的键;`reverse` 也是一个可选参数,用于指定是否降序排序,默认为升序。
例如,对一个列表进行升序排序:
```python
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst)
print(sorted_lst) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
如果要进行降序排序,可以将参数 `reverse` 设置为 `True`:
```python
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst, reverse=True)
print(sorted_lst) # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
```
如果要按照某个键进行排序,可以使用 `key` 参数。例如,对一个字典列表按照值进行排序:
```python
dct_lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 30}]
sorted_lst = sorted(dct_lst, key=lambda dct: dct['age'])
print(sorted_lst) # [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 30}]
```
以上就是 `sorted()` 的基本用法。