1. 前言
说到Python中的排序函数,相信有不少人想到了sort()函数。的确,sort()函数是Python中非常常用的排序函数之一,但是对于一些需要保留原始序列的场景,sort()函数就显得不太适用了。因为sort()函数会对原始序列进行就地排序,也就是说原始序列的顺序会被改变。而这时,就需要使用另一种排序函数——Sorted() 函数。
2. Sorted()函数的基本用法
Sorted() 函数的基本用法非常简单,只需要将需要排序的序列作为参数传入即可。Sorted() 函数会返回一个排好序的新序列,而原始序列的顺序不会发生改变。
2.1 Sorted()函数的示例
下面的例子演示了如何使用 Sorted() 函数对一个列表进行排序:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
以上代码的输出结果为:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
可以看到,Sorted() 函数返回了一个排好序的新列表,而原始列表中的顺序并没有发生改变。
2.2 Sorted()函数的可选参数——reverse
除了可以按照默认升序方式排序外,Sorted() 函数还可以按照降序方式排序。具体来说,只需传递一个 reverse=True 的可选参数即可实现降序排序。
下面的代码演示了如何使用reverse参数实现降序排序:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
以上代码的输出结果为:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
3. Sorted()函数的高级用法——key参数
Sorted() 函数还有一项非常强大的功能,那就是可以使用 key 参数指定一个函数,用于生成排序的关键字。在对元素进行排序时,Sorted() 函数首先会通过 key 函数计算每个元素的排序关键字,然后再按照这些关键字进行排序。
3.1 Sorted()函数的key参数示例
下面的代码演示了如何使用 key 参数对字符串列表按照字符串长度进行排序:
words = ['apple', 'banana', 'orange', 'watermelon', 'kiwi', 'pear']
sorted_words = sorted(words, key=len)
print(sorted_words)
以上代码的输出结果为:
['kiwi', 'pear', 'apple', 'orange', 'banana', 'watermelon']
可以看到,Sorted() 函数按照字符串长度升序排序了字符串列表,最短的字符串在前面,最长的字符串在了后面。
3.2 自定义函数作为key参数
除了可以使用内置函数作为key参数外,Sorted() 函数还支持使用自定义函数作为key参数。
下面的例子演示了如何使用自定义函数对一个列表进行排序:
def my_key_func(item):
return item['age']
people = [{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 21},
{'name': 'Charlie', 'age': 28},
{'name': 'David', 'age': 19}]
sorted_people = sorted(people, key=my_key_func)
print(sorted_people)
以上代码的输出结果为:
[{'name': 'David', 'age': 19}, {'name': 'Bob', 'age': 21}, {'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 28}]
可以看到,自定义函数 my_key_func 可以通过 item['age'] 计算每个人的年龄作为排序关键字,Sorted() 函数按照这些关键字进行排序。
4. 总结
Sorted() 函数是 Python 中十分实用的一个排序函数,它支持对包括列表、元组、字符串等在内的各种数据类型进行排序,可以根据需要选择升序或降序,也可以使用 key 参数指定一个函数生成排序关键字。在实际开发中,我们可以根据实际需求,灵活应用 Sorted() 函数,从而更高效地完成各种排序任务。