使用Python中的sorted()函数进行排序-从入门到高级
Python中的sorted()函数是一个强大的排序函数,可以对列表、元组等进行排序。在本文中,我们将学习如何使用sorted()函数进行排序,从入门到高级。
1. 基本使用方法
sorted()函数的基本使用方法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是要排序的列表、元组或其他可迭代对象;key是一个函数,用于提取用于比较的键;reverse是一个布尔值,用于指定升序还是降序排序。
例如,我们有一个列表,要对其进行排序:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
我们可以使用sorted()函数对其进行排序:
sorted_lst = sorted(lst) print(sorted_lst)
输出结果为:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
如果我们想按照从大到小的顺序排序,可以将reverse设为True:
sorted_lst_desc = sorted(lst, reverse=True) print(sorted_lst_desc)
输出结果为:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
2. 自定义排序规则
除了使用reverse参数调整排序顺序外,我们还可以使用key参数自定义排序规则。例如,我们有一个字符串列表,我们希望按照字符串长度进行排序:
lst = ["apple", "banana", "pear", "orange"]
我们可以定义一个函数,用于提取字符串长度:
def get_len(s):
return len(s)
然后将该函数传递给sorted()函数的key参数即可:
sorted_lst = sorted(lst, key=get_len) print(sorted_lst)
输出结果为:
['pear', 'apple', 'banana', 'orange']
排序的规则是按照字符串长度从小到大排序。
我们还可以使用lambda表达式来定义排序规则。例如,下面的代码使用lambda表达式按照字符串中第二个字符的ascii码进行排序:
lst = ["apple", "banana", "pear", "orange"] sorted_lst = sorted(lst, key=lambda s: ord(s[1])) print(sorted_lst)
输出结果为:
['banana', 'orange', 'pear', 'apple']
3. 对象排序
如果要对对象进行排序,需要定义一个函数,用于提取用于比较的键。例如,我们有一个Person类,其实例包含姓名和年龄两个属性:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
我们可以定义一个函数,用于提取年龄属性:
def get_age(person):
return person.age
然后将该函数传递给sorted()函数的key参数即可:
p1 = Person("Alice", 23)
p2 = Person("Bob", 25)
p3 = Person("Charlie", 20)
p4 = Person("David", 28)
lst = [p1, p2, p3, p4]
sorted_lst = sorted(lst, key=get_age)
for p in sorted_lst:
print(p.name, p.age)
输出结果为:
Charlie 20 Alice 23 Bob 25 David 28
排序的规则是按照年龄从小到大排序。
4. 总结
本文介绍了Python中sorted()函数的基本用法和高级用法。使用sorted()函数,我们可以对列表、元组和对象进行排序,并根据需要自定义排序规则。在实际应用中,sorted()函数是一个非常常用的函数,希望本文对你有所帮助。
