用Python编写函数,模拟内置函数sorted()。
时间: 2023-11-10 17:40:30 浏览: 86
以下是一个用Python编写的模拟内置函数sorted()的函数:
def my_sorted(iterable, key=None, reverse=False):
"""
模拟内置函数sorted()
:param iterable: 可迭代对象
:param key: 排序规则函数,可选
:param reverse: 是否反向排序,可选
:return: 排序后的列表
"""
# 将可迭代对象转换为列表
lst = list(iterable)
# 如果没有指定排序规则函数,使用默认排序规则
if key is None:
key = lambda x: x
# 使用冒泡排序算法进行排序
for i in range(len(lst)):
for j in range(i+1, len(lst)):
# 如果需要反向排序,则比较时交换大小关系
if reverse:
if key(lst[j]) > key(lst[i]):
lst[i], lst[j] = lst[j], lst[i]
# 否则按照正常大小关系进行比较
else:
if key(lst[j]) < key(lst[i]):
lst[i], lst[j] = lst[j], lst[i]
return lst
# 测试代码
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
print(my_sorted(lst)) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(my_sorted(lst, reverse=True)) # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
print(my_sorted(lst, key=lambda x: x % 3)) # [3, 3, 6, 9, 1, 1, 4, 5, 5, 5, 2]
阅读全文