使用 sorted() 函数可实现不修改原列表的排序,而 sort() 方法则直接修改原列表;2. 通过 key 参数指定排序键,如用 lambda 或函数定义排序依据,支持复杂排序逻辑;3. key 可返回元组实现多级排序,如先按年龄再按姓名;4. sorted() 更灵活通用,适用于各种可迭代对象,而 sort() 仅用于列表且原地排序;5. 选择取决于是否需保留原列表及性能考量,两者算法相同,差异主要在内存使用。

Python中,你可以用函数实现列表的排序,这提供了一种更灵活、可控的排序方式,而不是仅仅依赖内置的
sort()
解决方案
直接使用
sorted()
立即学习“Python免费学习笔记(深入)”;
# 使用 sorted() 函数 my_list = [3, 1, 4, 1, 5, 9, 2, 6] sorted_list = sorted(my_list) # 默认升序 print(sorted_list) # 输出: [1, 1, 2, 3, 4, 5, 6, 9] # 自定义排序规则 def my_sort_key(x): return x % 3 # 例如,按模3的结果排序 sorted_list_custom = sorted(my_list, key=my_sort_key) print(sorted_list_custom) # 输出可能为: [3, 6, 9, 1, 1, 4, 2, 5] (顺序取决于具体数据) # 使用 lambda 表达式简化 key 的定义 sorted_list_lambda = sorted(my_list, key=lambda x: x % 3) print(sorted_list_lambda) # 降序排序 sorted_list_reverse = sorted(my_list, reverse=True) print(sorted_list_reverse) # 输出: [9, 6, 5, 4, 3, 2, 1, 1]
sorted()
sort()
sorted()
key
key
key
举个例子,假设你有一个包含字符串的列表,你想忽略大小写进行排序:
string_list = ["apple", "Banana", "orange", "grape"] sorted_string_list = sorted(string_list, key=str.lower) print(sorted_string_list) # 输出: ['apple', 'Banana', 'grape', 'orange']
这里,
str.lower
key
更复杂的情况,假设你有一个包含元组的列表,每个元组包含姓名和年龄,你想先按年龄排序,再按姓名排序:
people = [("Alice", 30), ("Bob", 25), ("Charlie", 30), ("David", 20)]
sorted_people = sorted(people, key=lambda person: (person[1], person[0])) # 先按年龄,再按姓名
print(sorted_people) # 输出: [('David', 20), ('Bob', 25), ('Alice', 30), ('Charlie', 30)]注意
key
(person[1], person[0])
sort()
sorted()
sort()
None
sorted()
选择哪个取决于你的需求:
如果需要修改原始列表,并且不需要保留原始顺序,可以使用 sort()
如果需要保留原始列表的顺序,或者需要对其他类型的可迭代对象(例如元组、集合、字典的视图)进行排序,应该使用 sorted()
sorted()
另外,
sorted()
key
reverse
sort()
sorted()
一个常见的误解是
sort()
sorted()
sort()
sorted()
sort()
以上就是Python函数如何用函数实现列表的简单排序 Python函数列表排序的基础应用技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号