使用 Python 中的 sorted() 自带排序函数。
Python 是一种广泛使用的高级编程语言,因其简单易学、可读性强、代码短小而又功能强大而受到广泛欢迎。它广泛应用于各种领域中,包括科学计算、数据分析、机器学习、Web 开发等。Python 中标准库提供了许多实用函数,其中之一就是 sorted() 函数,它可以对列表、元组、集合等可迭代对象中的元素进行排序。
Python 中 sorted() 函数的语法如下:
sorted(iterable, *, key=None, reverse=False)
其中:
- iterable:表示要排序的可迭代对象,如列表、元组、集合等。
- key:可选参数,表示用于排序的函数,可以是 lambda 函数、自定义函数等。
- reverse:可选参数,用于指定是否要降序排列,默认为 False。若要降序排列,则要将其设置为 True。
sorted() 函数会返回一个新的列表,包含排序后的元素。
下面我们来看几个例子,了解一下 sorted() 函数的用法。
#### 例子 1:对列表进行排序
对列表进行排序是 sorted() 函数最常见的用法之一。我们可以使用 sorted() 函数对一个列表进行排序,例如:
lst = [3, 1, 4, 2, 5] sorted_lst = sorted(lst) print(sorted_lst) # [1, 2, 3, 4, 5]
这里我们定义了一个列表 lst,其中包含了 5 个整数。我们使用 sorted() 函数对其排序,并将结果存储在 sorted_lst 变量中,然后输出 sorted_lst 的值。由于 sorted() 函数会返回一个新的列表,因此原列表 lst 并没有发生变化。
#### 例子 2:对元组进行排序
除了列表,sorted() 函数还可以对元组进行排序。我们可以将元组转换为列表,然后使用 sorted() 函数对其进行排序,例如:
tpl = (3, 1, 4, 2, 5) sorted_tpl = tuple(sorted(list(tpl))) print(sorted_tpl) # (1, 2, 3, 4, 5)
这里我们定义了一个元组 tpl,其中包含了 5 个整数。我们首先将其转换为列表,然后使用 sorted() 函数对其进行排序,最后再将排序后的列表转换为元组,并将结果存储在 sorted_tpl 变量中。
#### 例子 3:对字典按值进行排序
除了基本数据类型,sorted() 函数还可以对字典进行排序。但是需要注意的是,字典是无序的,因此我们需要对其进行转换后才能排列。
如果我们要按照字典中的值进行排序,可以使用 items() 方法,它可以将字典转换为元组列表。然后我们可以使用 sorted() 函数对其进行排序,例如:
dct = {'apple': 5, 'banana': 3, 'orange': 4, 'pear': 2}
sorted_dct = dict(sorted(dct.items(), key=lambda x: x[1]))
print(sorted_dct) # {'pear': 2, 'banana': 3, 'orange': 4, 'apple': 5}
这里我们定义了一个字典 dct,其中包含了 4 个键值对,分别表示水果和对应的数量。我们使用 items() 方法将其转换为元组列表,然后使用 sorted() 函数对其进行排序。
这里使用了一个 lambda 函数作为排序函数,它会根据元组的第二个元素(即数量)进行排序。最后,我们将排序后的元素转换为字典,并将结果存储在 sorted_dct 变量中。
#### 例子 4:对对象进行排序
除了基本数据类型和字典,sorted() 函数还可以对对象进行排序。我们可以定义一个自定义的类,在其中定义一个 __lt__() 方法,用于比较对象大小。
例如,我们定义了一个包含姓名和年龄的 Person 类:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __lt__(self, other):
return self.age < other.age
这个类包含了一个 __lt__() 方法,用于比较两个对象的大小。如果我们希望按照年龄大小进行排序,则可以使用 sorted() 函数对其进行排序,例如:
lst = [Person('Tom', 23), Person('Alice', 18), Person('Bob', 25)]
sorted_lst = sorted(lst)
for person in sorted_lst:
print(person.name, person.age)
这里我们定义了一个包含 3 个 Person 对象的列表 lst,分别表示 Tom、Alice 和 Bob。我们使用 sorted() 函数对其进行排序,并将结果存储在 sorted_lst 变量中。最后,我们遍历 sorted_lst,输出每个 Person 对象的姓名和年龄。
在这个例子中,我们定义了一个 __lt__() 方法,它会比较两个 Person 对象的年龄大小。如果我们希望按照姓名或者其他属性进行排序,只需要修改 __lt__() 方法即可。
总结
在 Python 中,使用 sorted() 函数可以对列表、元组、集合、字典等可迭代对象进行排序,其语法简单易懂。除了默认排序方式外,我们还可以使用自定义函数进行排序,例如 lambda 函数、自定义函数等。sorted() 函数返回的是一个新的已排序的列表(或字典等),原来的可迭代对象并没有发生变化。根据不同的需求,我们可以灵活地使用 sorted() 函数进行排序。
