Python中的sorted()函数 – 详细说明和实际应用
sorted()函数是Python内置函数之一,用于排序列表和其他可迭代对象,返回一个新的已排序的列表。此函数可用于排序数字、字符串和自定义对象。在本文中,我们将介绍sorted()函数的详细说明和实际应用。
1. 语法
sorted(iterable, key=None, reverse=False)
其中,
- iterable:待排序的可迭代对象,如列表、元组、字符串等。
- key(可选参数):指定用于排序的关键字函数,这个关键字可以是一个函数或Lambda表达式。
- reverse(可选参数):如果为True,则按降序排列。
2. 实例
下面通过实例来说明sorted()函数的基本用法:
# 排序数字
numbers = [1, 5, 2, 8, 4, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 2, 4, 5, 8, 9]
# 排序字符串
words = ["apple", "banana", "orange", "cherry"]
sorted_words = sorted(words)
print(sorted_words) # ['apple', 'banana', 'cherry', 'orange']
# 排序自定义对象
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [
Person("Alice", 25),
Person("Bob", 30),
Person("Charlie", 20),
]
# 按年龄升序排序
sorted_people = sorted(people, key=lambda p: p.age)
for p in sorted_people:
print(p.name, p.age)
# Charlie 20
# Alice 25
# Bob 30
# 按年龄降序排序
sorted_people2 = sorted(people, key=lambda p: p.age, reverse=True)
for p in sorted_people2:
print(p.name, p.age)
# Bob 30
# Alice 25
# Charlie 20
3. 实际应用
sorted()函数常用于数据分析、机器学习等领域中的排序操作。下面介绍几个实际应用场景。
3.1. 排序字典
字典是Python中常用的数据结构之一,但字典本身是无序的。如果需要对字典按照键或值进行排序,可以使用sorted()函数。下面是一个示例:
# 排序字典
d = {"a": 3, "b": 1, "c": 2}
sorted_d = dict(sorted(d.items(), key=lambda x: x[1]))
print(sorted_d) # {'b': 1, 'c': 2, 'a': 3}
上面的代码使用sorted()函数将字典d按值进行排序。首先,使用d.items()将字典转换为可迭代对象,然后使用lambda表达式指定按值排序。最后,使用dict()将排好序的列表转换为字典。
3.2. 排序csv文件
csv(Comma-Separated Values)是一种常见的文件格式,常用于存储和传输简单的表格数据。为了方便起见,可以使用sorted()函数对CSV文件进行排序。下面是一个示例:
# 排序csv文件
import csv
with open("data.csv", "r") as f:
reader = csv.DictReader(f)
sorted_rows = sorted(reader, key=lambda row: row["age"])
with open("sorted_data.csv", "w") as f:
writer = csv.DictWriter(f, fieldnames=reader.fieldnames)
writer.writeheader()
for row in sorted_rows:
writer.writerow(row)
上面的代码使用标准库csv读取和写入CSV文件。首先,使用csv.DictReader()读取CSV文件,并使用lambda表达式指定按年龄排序。然后,使用csv.DictWriter()将排好序的行写入新的CSV文件。
3.3. 排序numpy数组
NumPy是Python中常用的科学计算库,提供了用于处理高维数组和矩阵的工具。为了方便起见,可以使用sorted()函数对NumPy数组进行排序。下面是一个示例:
# 排序numpy数组
import numpy as np
a = np.array([[3, 1], [2, 4]])
print("原始数组:")
print(a)
sorted_a = np.array(sorted(a.flat))
sorted_a = sorted_a.reshape(a.shape)
print("按升序排序:")
print(sorted_a)
使用numpy.array()创建一个二维数组a。然后,使用a.flat将数组展平成一维数组,并使用sorted()函数进行排序。最后,使用numpy.reshape()将排好序的数组转换回原来的形状。
4. 小结
本文介绍了sorted()函数的语法、实例和实际应用。在数据分析、机器学习等领域中,排序往往是必要的操作。sorted()函数可以方便地对列表、字典、CSV文件、NumPy数组等各种可迭代对象进行排序。在使用sorted()函数时,可以指定关键字函数或Lambda表达式来定制排序规则。
