运用Python的sorted()函数对列表进行排序
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进行开发的程序员都应该掌握它的使用方法。
