编写函数,模拟内置函数sorted(),,功能与sorted()一致
时间: 2023-08-16 18:27:27 浏览: 73
python排序函数sort()与sorted()的区别
好的,以下是一个简单的Python函数,可以模拟内置函数`sorted()`的功能:
```python
def my_sorted(iterable, key=None, reverse=False):
"""模拟内置函数sorted()的功能"""
# 如果没有指定key函数,则默认使用元素本身进行比较
if key is None:
key = lambda x: x
# 使用冒泡排序算法进行排序
n = len(iterable)
for i in range(n):
for j in range(0, n-i-1):
if key(iterable[j]) > key(iterable[j+1]):
iterable[j], iterable[j+1] = iterable[j+1], iterable[j]
# 如果reverse为True,则返回反向排序后的结果
if reverse:
iterable.reverse()
return iterable
```
这个函数接受三个参数:
- `iterable`:需要排序的可迭代对象,可以是列表、元组、集合等;
- `key`:用于指定排序时使用的比较函数,可以是内置函数(如`len`、`str.lower`等),也可以是自定义函数;
- `reverse`:用于指定排序结果是否需要反向排序,如果为True,则返回反向排序后的结果。
使用示例:
```python
>>> my_sorted([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
>>> my_sorted(['hello', 'world', 'Python', 'is', 'great'], key=str.lower)
['great', 'hello', 'is', 'Python', 'world']
>>> my_sorted(['hello', 'world', 'Python', 'is', 'great'], key=len, reverse=True)
['Python', 'world', 'hello', 'great', 'is']
```
阅读全文