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

运用Python的sorted()函数对列表进行排序

发布时间:2023-06-06 08:50:22

Python中的sorted()函数是一个内置函数,用于将列表中的元素按预定顺序进行排序。它排序的规则可以根据我们的需要来定,如按字母顺序、按数字大小等。

使用sorted()函数排序

下面是一个简单的例子,展示如何使用Python的sorted()函数对列表进行排序。

我们首先定义一个简单的列表(包含杂乱无章的数字):

>>> nums = [5,2,1,3,4]

我们可以使用sorted()函数,将这个列表按从小到大的顺序排列:

>> sorted_nums = sorted(nums)

>> print(sorted_nums)

输出结果是:

[1, 2, 3, 4, 5]

在上面的例子中,我们将排序后的列表存储在了一个新的变量中。

如果我们需要将列表按从大到小(或者相反的顺序)进行排序,只需要加上一个参数reverse=True,代码如下:

>>> sorted_nums = sorted(nums, reverse=True)

>>> print(sorted_nums)

输出结果是:

[5, 4, 3, 2, 1]

自定义排序规则

如果我们需要根据各种不同的因素进行排序(例如按照字符串长度,或按照某个属性排序),我们可以使用Python的key参数来定义自己的排序规则。

下面是一个例子,演示如何根据字符串长度排序:

>>> words = ["banana", "apple", "grape", "kiwi"]

>>>

>>> sorted_words = sorted(words, key=len)

>>> print(sorted_words)

输出结果是:

['kiwi', 'apple', 'grape', 'banana']

在上面的例子中,我们使用了key参数来指定我们使用字符串长度作为排序规则。 这里我们使用len内置函数作为key参数的值,以告诉Python按照字符串的长度对列表进行排序。

可以发现,按照长度排序后,"kiwi"排在 位,"banana"排在最后一位。

另一个例子,假设我们有一个有关人员信息的列表,在列表中,我们尝试将人员按照年龄、身高和体重属性进行排序:

>>> people = [

...     {'name': 'Tom', 'age': 25, 'height': 185, 'weight': 75},

...     {'name': 'John', 'age': 27, 'height': 170, 'weight': 68},

...     {'name': 'David', 'age': 26, 'height': 168, 'weight': 70},

...     {'name': 'Alice', 'age': 28, 'height': 165, 'weight': 55},

... ]

>>>

>>> sorted_people = sorted(

...     people, key=lambda x: (x['age'], x['height'], x['weight']))

>>>

>>> for person in sorted_people:

...     print(person)

输出结果是:

{'name': 'Tom', 'age': 25, 'height': 185, 'weight': 75}

{'name': 'David', 'age': 26, 'height': 168, 'weight': 70}

{'name': 'John', 'age': 27, 'height': 170, 'weight': 68}

{'name': 'Alice', 'age': 28, 'height': 165, 'weight': 55}

在上面的例子中,我们使用了lambda函数作为key参数的值。lambda函数是Python中的匿名函数,它将输入的人员信息字典作为参数,并返回一个元组,其中包含按照年龄、身高和体重排序的值。该元组用于将人员信息列表排序。

sorted()函数采用稳定的排序算法

Python的sorted()函数采用归并排序算法,这是一种稳定的排序算法,保证相等元素的相对位置保持不变。 这意味着,在排序列表时,如果存在多个具有相同排序值的元素,则sorted()函数将它们的相对位置不变地保留在列表中。

下面是一个例子,展示在排序过程中如何使用sorted()函数保持相等元素的相对位置不变:

>>> nums = [5, 4, 2, 5, 1, 3, 2]

>>>

>>> sorted_nums = sorted(nums)

>>> print(sorted_nums)

输出结果是:

[1, 2, 2, 3, 4, 5, 5]

可以看到,排序后的列表中,有两个值为2的元素和两个值为5的元素,它们的相对位置保持不变。这就是sorted()函数稳定排序的工作原理。

结论

sorted()函数是Python中非常有用的内置函数之一。它可以将列表排序为按照各种规则排序(例如按照数字大小或按照字符串长度)。此外,sorted()函数保证在排序时保持相等元素的相对位置不变,并使用了一种稳定的排序算法来实现这一点。因此,sorted()函数是Python中必不可少的排序工具之一,任何使用Python进行开发的程序员都应该掌握它的使用方法。