欢迎访问宙启技术站
智能推送

使用Python中的sorted()函数进行排序-从入门到高级

发布时间:2023-06-18 07:08:10

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()函数是一个非常常用的函数,希望本文对你有所帮助。