继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 sorted

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

Python 的内置函数 sorted() 是一个功能强大的排序工具,用于对可迭代对象进行排序操作。该函数会返回一个新的已排序列表,而不会修改原始输入对象。

基本语法:

sorted(iterable, key=None, reverse=False)

参数说明:

  1. iterable:必需参数,表示要排序的可迭代对象(如列表、元组、字符串等)
  2. key:可选参数,指定排序依据的函数(默认为None,即直接比较元素值)
  3. reverse:可选布尔参数,控制排序顺序(False为升序,True为降序)

典型用法示例:

# 对列表进行排序
numbers = [3, 1, 4, 1, 5, 9, 2]
print(sorted(numbers))  # 输出:[1, 1, 2, 3, 4, 5, 9]

# 对字符串排序(按ASCII码值)
letters = "python"
print(sorted(letters))  # 输出:['h', 'n', 'o', 'p', 't', 'y']

# 使用key参数进行复杂排序
words = ["apple", "banana", "cherry", "date"]
print(sorted(words, key=len))  # 按单词长度排序

高级应用场景:

  1. 自定义排序规则:通过key参数可以实现复杂的排序逻辑
students = [
    {"name": "Alice", "grade": 90},
    {"name": "Bob", "grade": 85},
    {"name": "Charlie", "grade": 95}
]
# 按成绩降序排序
print(sorted(students, key=lambda x: x["grade"], reverse=True))
  1. 多级排序:可以组合多个条件进行排序
data = [(1, 'b'), (2, 'a'), (1, 'a')]
# 先按元组第一个元素升序,再按第二个元素升序
print(sorted(data, key=lambda x: (x[0], x[1])))

list.sort()方法的区别:

  1. sorted()适用于所有可迭代对象,而list.sort()是列表的专有方法
  2. sorted()返回新列表,原对象不变;list.sort()会原地修改列表
  3. sorted()在内存使用上效率略低,因为它需要创建新列表

性能特点:

  • 时间复杂度:O(n log n)
  • 稳定性:Python的排序是稳定的,即相等元素的相对顺序保持不变
  • 实际实现使用Timsort算法(混合了归并排序和插入排序)

注意事项:

  • 排序不同类型元素时会引发TypeError
  • 对字典使用时默认按键排序
  • 可以配合functools.cmp_to_key使用旧式的比较函数
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP