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

如何在Python中使用内置函数sorted()对列表进行排序?

发布时间:2023-05-30 18:10:57

在Python中,有许多内置函数可以帮助开发者更有效率地完成任务,其中最常用的之一是sorted()函数。sorted()函数用于对列表进行排序,即按某一特定条件重新排列列表中元素的顺序,以使其按照所需的方式呈现。

在本文中,我们将详细介绍如何使用sorted()函数对列表进行排序。我们将从简单的例子开始,然后向您展示如何在不同情况下使用sorted()函数,以及它的一些高级用法和选项。

一、基本语法

在Python中,使用sorted()函数对列表进行排序非常简单,其基本语法如下:

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

其中:

- iterable表示待排序的列表;

- key是排序函数,可以用自定义函数或lambda函数指定;

- reverse表示是否降序排列,默认为False,即升序排列。

例如,对一个列表进行简单的升序排序:

mylist = [3, 1, 4, 5, 2]
sorted_list = sorted(mylist)
print(sorted_list) #[1, 2, 3, 4, 5]

二、按照特定函数排序

使用lambda函数可以按照其他规则排序,例如按照字符串长度升序排序:

mylist = ['ab', 'cde', 'fg', 'hijk', 'lmnopq']
sorted_list = sorted(mylist, key=lambda x: len(x))
print(sorted_list) #['ab', 'fg', 'cde', 'hijk', 'lmnopq']

在这里lambda函数定义了排序规则,将每个元素x的长度作为排序关键字来排序。

三、降序排列

按照降序排列也非常简单:将reverse参数设置为True即可。

mylist = [3, 1, 4, 5, 2]
sorted_list = sorted(mylist, reverse=True)
print(sorted_list) #[5, 4, 3, 2, 1]

四、按多个关键字排序

我们还可以按多个关键字进行排序。例如,我们可以按照一个元素的长度和第二个元素的值进行排序:

mylist = [('ab', 3), ('cde', 1), ('fg', 4), ('hijk', 2), ('lmnopq', 5)]
sorted_list = sorted(mylist, key=lambda x: (len(x[0]), x[1]))
print(sorted_list) #[('ab', 3), ('fg', 4), ('cde', 1), ('hijk', 2), ('lmnopq', 5)]

在此例中,我们给定了一个lambda函数来定义排序关键字。他按照 个元素的长度和第二个元素的值进行排序。

五、使用项getter函数

在某些情况下,我们可能希望按照列表中的某些属性来排序对象列表。这时我们可以使用python自带的operator模块提供的itemgetter函数来简化代码。

例如,我们有一个对象列表,我们希望按照其属性a和b进行排序:

import operator

class MyClass:
    def __init__(self, a, b):
        self.a = a
        self.b = b

mylist = [MyClass(3, 4), MyClass(1, 2), MyClass(2, 3), MyClass(1, 3)]
sorted_list = sorted(mylist, key=operator.attrgetter('a', 'b'))
for obj in sorted_list:
    print(obj.a, obj.b)

在此示例中,我们使用了operator.attrgetter()函数来按照对象的a和b属性,按升序排序对象列表。我们可以看到,输出结果按照a和b属性排序。

六、总结

使用内置函数sorted()对列表进行排序非常简单。您可以按照需要指定排序规则、关键字和排序顺序。sorted()函数功能强大,可以按照自定义函数和对象属性等多种规则对列表进行排序。在Python编程中,sorted()函数是必须掌握的一个工具之一,它可以帮助我们更高效地编写代码,提高代码的可读性和可维护性。