排序「Sorted()」:我在Python中最喜欢的函数

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() 函数,从而更高效地完成各种排序任务。

后端开发标签