sorted() 是 Python 中一个非常强大且灵活的内置函数,用于对可迭代对象中的元素进行排序。本章将详细介绍 sorted() 函数的使用方法、参数及其应用场景。
基本语法和用法
sorted() 函数的基本语法如下:
sorted(iterable, key=None, reverse=False)
- iterable:必需参数,表示需要排序的可迭代对象,如列表、元组等。
- key:可选参数,用于指定一个函数作为排序的关键字,这个函数会被应用于
iterable的每个元素上,并根据其返回值来排序。 - reverse:可选参数,默认为
False,表示升序排序;如果设置为True,则表示降序排序。
示例
下面是一个简单的示例,展示如何使用 sorted() 对一个列表进行排序:
numbers = [5, 2, 9, 1, 5, 6] sorted_numbers = sorted(numbers) print(sorted_numbers) # 输出: [1, 2, 5, 5, 6, 9]
在这个例子中,我们没有提供 key 和 reverse 参数,因此默认按照升序排列。
使用关键字参数 key
key 参数允许我们自定义排序规则。这在处理复杂数据结构时特别有用。例如,如果我们有一个包含字典的列表,并希望根据字典中的某个键值来排序,我们可以这样做:
// www.javascriptcn.com code example
students = [
{"name": "Alice", "age": 22},
{"name": "Bob", "age": 20},
{"name": "Charlie", "age": 25}
]
# 按照 age 字段排序
sorted_students_by_age = sorted(students, key=lambda x: x["age"])
print(sorted_students_by_age)
# 输出:
# [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 22}, {'name': 'Charlie', 'age': 25}]这里,我们使用了 lambda 函数作为 key 参数,指定了排序依据为字典中的 "age" 键值。
排序字符串列表
除了数字和字典,sorted() 还可以用来对字符串列表进行排序。默认情况下,字符串会按照字母顺序排序:
words = ["banana", "apple", "cherry"] sorted_words = sorted(words) print(sorted_words) # 输出: ['apple', 'banana', 'cherry']
如果你想按字符串长度排序,可以通过指定 key 参数实现:
sorted_words_by_length = sorted(words, key=len) print(sorted_words_by_length) # 输出: ['apple', 'banana', 'cherry']
处理元组和集合
sorted() 函数同样适用于元组和集合。对于元组,结果仍然是一个列表形式:
tup = (3, 1, 4, 1, 5, 9) sorted_tup = sorted(tup) print(sorted_tup) # 输出: [1, 1, 3, 4, 5, 9]
对于集合,由于集合本身是无序的,所以排序后的结果总是列表形式:
s = {5, 2, 9, 1, 5, 6}
sorted_set = sorted(s)
print(sorted_set) # 输出: [1, 2, 5, 6, 9]反向排序
通过设置 reverse 参数为 True,我们可以轻松地获得降序排序的结果:
numbers = [5, 2, 9, 1, 5, 6] sorted_numbers_desc = sorted(numbers, reverse=True) print(sorted_numbers_desc) # 输出: [9, 6, 5, 5, 2, 1]
多级排序
有时候我们需要根据多个字段进行排序,这时可以使用嵌套的 key 函数或 tuple 结构来实现。例如,先按年龄排序,再按名字排序:
// www.javascriptcn.com code example
students = [
{"name": "Alice", "age": 22},
{"name": "Bob", "age": 20},
{"name": "Charlie", "age": 25},
{"name": "Alice", "age": 20}
]
# 先按 age 排序,再按 name 排序
sorted_students_by_age_name = sorted(students, key=lambda x: (x["age"], x["name"]))
print(sorted_students_by_age_name)
# 输出:
# [{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 22}, {'name': 'Charlie', 'age': 25}]总结
通过本章的学习,你应该掌握了 sorted() 函数的基本用法以及如何利用它对各种类型的数据进行排序。无论是简单的数字列表还是复杂的嵌套数据结构,sorted() 都能提供强大的支持。希望这些知识对你理解和使用 Python 编程有所帮助。