pin_drop当前位置:知识文库 ❯ 图文
Python高阶函数sorted详解 - 自定义排序规则
概述
sorted()是Python内置的排序函数,它返回一个新的已排序列表。sorted可以接收key参数指定排序规则,也可以接收reverse参数控制升序或降序。
语法
代码示例
sorted(iterable, *, key=None, reverse=False)
基本用法
代码示例
nums = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_nums = sorted(nums)
print(sorted_nums)
降序排列
代码示例
nums = [3, 1, 4, 1, 5, 9, 2, 6]
desc = sorted(nums, reverse=True)
print(desc)
自定义排序规则
代码示例
students = [("Alice", 25), ("Bob", 20), ("Charlie", 23)]
by_age = sorted(students, key=lambda x: x[1])
print(by_age)
多重排序
代码示例
data = [("a", 3), ("b", 1), ("c", 2), ("d", 1)]
result = sorted(data, key=lambda x: (x[1], x[0]))
print(result)
注意事项
提示:sorted返回新列表,不修改原列表。原列表的sort()方法是原地排序。key参数指定排序规则。reverse控制升序降序。
小结
-
sorted返回新的已排序列表:不会修改原始数据
-
不修改原列表:保持原始数据的完整性
-
key参数指定排序规则:可自定义排序依据
-
reverse控制升序降序:False为升序,True为降序
练习题
练习1
使用sorted对字典按键排序
练习2
使用sorted对字符串列表按长度排序
常见问题
sorted()和list.sort()有什么区别?
sorted()返回一个新的已排序列表,不修改原列表,可接收任何可迭代对象;list.sort()是列表的方法,直接在原列表上排序,返回None,只能用于列表。
key参数如何自定义排序规则?
key参数接收一个函数,该函数会对每个元素进行处理,sorted按照处理后的返回值进行排序。可以使用lambda表达式或自定义函数。
如何实现多重排序?
在key参数中返回一个元组,元组中的元素依次作为第一、第二、第三排序依据。Python会按照元组元素的顺序依次比较。
sorted可以排序不同类型的数据吗?
可以,但需要通过key参数将不同类型转换为可比较的类型。直接比较不同类型会抛出TypeError,使用key可以统一比较标准。
本文涉及AI创作
内容由AI创作,请仔细甄别