简介
Python 的内置 sorted() 函数是在程序中对数据进行排序的强大工具。在本教程中,我们将探讨使用 sorted() 函数的基础知识以及高级排序技术,以帮助你掌握这项重要的 Python 技能。
Python 的内置 sorted() 函数是在程序中对数据进行排序的强大工具。在本教程中,我们将探讨使用 sorted() 函数的基础知识以及高级排序技术,以帮助你掌握这项重要的 Python 技能。
sorted()
函数是 Python 中的一个内置函数,它允许你对序列(如列表、元组或字符串)中的元素进行排序。它是一个多功能的函数,可以用于以各种方式对数据进行排序,使其成为许多编程任务中的一个有价值的工具。
sorted()
函数接受一个可迭代对象(如列表、元组或字符串)作为输入,并返回一个新的已排序列表。原始的可迭代对象保持不变。该函数可以按升序或降序对元素进行排序,还可以基于自定义键函数进行排序。
sorted()
函数的基本语法如下:
sorted(iterable, key=None, reverse=False)
iterable
:要排序的元素序列。key
:一个可选函数,它接受可迭代对象中的一个元素,并返回一个用于排序的值。reverse
:一个布尔值,用于确定排序顺序。如果为 True
,则元素将按降序排序。sorted()
函数具有以下几个优点:
sorted()
函数使用高效的排序算法,适用于对大型数据集进行排序。sorted()
返回一个新的已排序列表。key
和 reverse
参数允许你自定义排序行为。sorted()
函数可用于广泛的场景,例如:
在以下部分中,我们将更详细地探讨 sorted()
函数的用法,涵盖基本排序和高级排序技术。
在本节中,我们将探讨如何使用 sorted()
函数对基本数据类型(如数字和字符串)进行排序。
在 Python 中,使用 sorted()
函数对数字进行排序很简单。以下是一个示例:
numbers = [5, 2, 8, 1, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers) ## 输出: [1, 2, 5, 8, 9]
默认情况下,sorted()
函数按升序对元素进行排序。要按降序排序,可以使用 reverse=True
参数:
numbers = [5, 2, 8, 1, 9]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) ## 输出: [9, 8, 5, 2, 1]
对字符串进行排序也是 sorted()
函数的常见用例。以下是一个示例:
names = ["John", "Alice", "Bob", "Charlie"]
sorted_names = sorted(names)
print(sorted_names) ## 输出: ['Alice', 'Bob', 'Charlie', 'John']
默认情况下,sorted()
函数按字母顺序对字符串进行排序。你还可以使用 key
参数和 str.lower()
函数进行不区分大小写的排序:
names = ["John", "alice", "Bob", "charlie"]
sorted_names = sorted(names, key=str.lower)
print(sorted_names) ## 输出: ['alice', 'Bob', 'charlie', 'John']
sorted()
函数也可以处理混合数据类型,例如包含数字和字符串的列表。在这种情况下,元素按其自然顺序排序(数字在前,字符串在后):
mixed_data = [5, "apple", 2, "banana", 8, "cherry"]
sorted_data = sorted(mixed_data)
print(sorted_data) ## 输出: [2, 5, 8, 'apple', 'banana', 'cherry']
通过使用 key
参数,你可以为混合数据类型自定义排序行为。例如,要按反向字母顺序对字符串进行排序:
mixed_data = [5, "apple", 2, "banana", 8, "cherry"]
sorted_data = sorted(mixed_data, key=lambda x: isinstance(x, str) and x.lower() or x)
print(sorted_data) ## 输出: [8, 5, 2, 'cherry', 'banana', 'apple']
在下一节中,我们将探讨使用 sorted()
函数的更高级排序技术。
在本节中,我们将探讨使用 sorted()
函数的更高级排序技术,包括对自定义对象进行排序、对字典进行排序以及使用自定义键函数。
假设你有一个自定义对象列表,并且你想根据特定属性对它们进行排序。你可以使用 sorted()
函数的 key
参数来实现这一点。以下是一个示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person('{self.name}', {self.age})"
people = [
Person("John", 35),
Person("Alice", 28),
Person("Bob", 42)
]
## 按年龄排序
sorted_people = sorted(people, key=lambda x: x.age)
print(sorted_people) ## 输出: [Person('Alice', 28), Person('John', 35), Person('Bob', 42)]
## 按姓名排序
sorted_people = sorted(people, key=lambda x: x.name)
print(sorted_people) ## 输出: [Person('Alice', 28), Person('Bob', 42), Person('John', 35)]
当你需要按特定顺序检索字典的键或值时,对字典进行排序会很有用。以下是一个示例:
person = {
"name": "John",
"age": 35,
"city": "New York"
}
## 按键排序
sorted_person = sorted(person.items(), key=lambda x: x[0])
print(sorted_person) ## 输出: [('age', 35), ('city', 'New York'), ('name', 'John')]
## 按值排序
sorted_person = sorted(person.items(), key=lambda x: x[1])
print(sorted_person) ## 输出: [('name', 'John'), ('age', 35), ('city', 'New York')]
sorted()
函数的 key
参数允许你定义一个自定义函数,该函数决定排序顺序。当你需要根据复杂逻辑或属性组合对元素进行排序时,这会很有用。
例如,假设你有一个表示学生记录的元组列表,你想先按成绩(降序)排序,然后按姓名(升序)排序:
student_records = [
("John", 85),
("Alice", 92),
("Bob", 78),
("Charlie", 90)
]
sorted_records = sorted(student_records, key=lambda x: (-x[1], x[0]))
print(sorted_records) ## 输出: [('Alice', 92), ('Charlie', 90), ('John', 85), ('Bob', 78)]
在自定义键函数中,我们使用 -x[1]
按成绩降序排序,使用 x[0]
按姓名升序排序。
通过利用 sorted()
函数和自定义键函数的灵活性,你可以以各种方式对数据进行排序,以满足你的特定需求。
Python 中的 sorted() 函数是一个多功能工具,可让你对各种数据类型进行排序。通过理解基础知识并探索高级排序技术,你可以优化 Python 代码并提高数据处理任务的效率。无论你是初学者还是经验丰富的 Python 程序员,本教程都将为你提供在 Python 项目中有效使用 sorted() 函数所需的知识和技能。