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

如何利用Python的sorted()函数对列表进行排序

发布时间:2023-06-16 11:34:49

Python中的sorted()函数可以对列表进行排序,它能够按照指定的规则对列表进行排序,可以对数字、字符串、元组等类型的列表进行排序。本文将对sorted()函数的使用方法进行详细的介绍,包括排序的方式和参数说明等。

一、sorted()函数的概述

sorted()函数是Python中内置的一个排序函数,它可以对一个可迭代的对象进行排序,返回一个新的已排序的列表。它的基本语法如下所示:

    sorted(iterable, key=None, reverse=False)

其中:

- iterable:表示要排序的可迭代对象,比如列表、元组、字符串等;

- key:表示排序的关键字,可以是函数、lambda函数或者属性。默认为None,表示按照可迭代对象的元素进行排序;

- reverse:表示排序的顺序,如果为True则按照降序排列,否则按照升序排列,默认为False(升序排列)。

二、按照元素的大小进行排序

为了说明sorted()函数的使用方法,我们首先定义一个列表,然后对其进行升序和降序排列:

    lst = [3, 9, 2, 4, 1, 7, 5, 8, 6]

    print(sorted(lst))           # 升序排列:[1, 2, 3, 4, 5, 6, 7, 8, 9]

    print(sorted(lst, reverse=True)) # 降序排列:[9, 8, 7, 6, 5, 4, 3, 2, 1]

三、按照字符串的字母顺序进行排序

当排序的对象是字符串时,sorted()函数会按照字母的顺序进行排序,例如:

    lst = ['Python', 'Java', 'C++', 'C#', 'PHP', 'Ruby']

    print(sorted(lst))           # 升序排列:['C++', 'C#', 'Java', 'PHP', 'Python', 'Ruby']

    print(sorted(lst, reverse=True)) # 降序排列:['Ruby', 'Python', 'PHP', 'Java', 'C#', 'C++']

但是注意,在按照字母的顺序排序时会区分大小写,因此有时我们需要将大小写忽略,可以添加一个key参数,将所有字符串都转换成小写字母再进行排序:

    lst = ['PyThon', 'java', 'C++', 'C#', 'php', 'Ruby']

    print(sorted(lst))           # 区分大小写升序排列:['C++', 'C#', 'Ruby', 'PyThon', 'java', 'php']

    print(sorted(lst, key=str.lower)) # 不区分大小写升序排列:['C++', 'C#', 'java', 'php', 'PyThon', 'Ruby']

四、按照元组中的某个元素进行排序

当列表中的元素是元组时,sorted()函数会默认按照元组的第一个元素进行排序,例如:

    lst = [(2, 'Python'), (3, 'Java'), (1, 'C++'), (4, 'C#')]

    print(sorted(lst))           # 升序排列:[(1, 'C++'), (2, 'Python'), (3, 'Java'), (4, 'C#')]

    print(sorted(lst, reverse=True)) # 降序排列:[(4, 'C#'), (3, 'Java'), (2, 'Python'), (1, 'C++')]

当我们需要按照元组中的某个元素进行排序时,可以通过key参数指定要排序的元素,例如:

    lst = [(2, 'Python'), (3, 'Java'), (1, 'C++'), (4, 'C#')]

    print(sorted(lst, key=lambda item: item[1])) # 按照元组中的第二个元素进行升序排列:[(1, 'C++'), (4, 'C#'), (3, 'Java'), (2, 'Python')]

五、按照属性进行排序

当我们需要按照对象的某个属性进行排序时,可以通过key参数指定要排序的属性,例如:

    class Student:

        def __init__(self, name, score):

            self.name = name

            self.score = score

    lst = [Student('Tom', 80), Student('Mike', 90), Student('Jane', 70)]

    print(sorted(lst, key=lambda student: student.score)) # 按照学生的成绩进行升序排列:[<__main__.Student object at 0x10a70b9e8>, <__main__.Student object at 0x10a70bf60>, <__main__.Student object at 0x10a70b9b0>]

其中,lambda函数中的student表示列表中的每个元素,我们可以通过student.score获取每个元素的成绩属性。

六、总结

sorted()函数是Python内置的一个排序函数,能够对列表、元组、字符串等类型的可迭代的对象进行排序。在使用时,需要注意对排序的关键字和排序的顺序进行设置。

可以看出,sorted()函数的灵活性非常高,可以适用于各种排序需求,掌握它的使用方法,将能够更好地帮助我们进行编程。