Python中的sorted函数是什么?
Python中的sorted函数是一个非常常用的内置函数,它可以用来排序一个可迭代对象,例如列表、元组或者字符串。它可以按照升序或者降序进行排序,并且支持自定义排序规则。
当我们需要对一个序列进行排序时,sorted函数是我们常常会用到的工具。此函数返回一个新的列表,其中的元素按照指定的顺序排列。sorted函数的完整语法如下:
sorted(iterable, *, key=None, reverse=False)
sorted函数包含两个必选参数和两个可选参数。下面是这几个参数的作用:
- iterable:必选参数,表示要排序的可迭代对象。
- key:可选参数,表示用于排序的关键字,必须是一个函数。可以理解为排序前对每个元素进行预处理的函数。
- reverse:可选参数,表示排序顺序。默认为升序,如果设置为True,则为降序。
下面我们来分别探究一下这些参数的应用。
1. iterable
iterable 表示要排序的对象。它可以是一个列表、元组、集合、字典或其他可迭代对象,通常我们会使用列表类型。需要注意的是,sorted函数对于字典的排序方式和对于列表或元组的方式不同,因为字典是无序的。
2. key
key 参数是可选的,用于设定排序的关键字。此参数必须是一个函数,它接受可迭代对象中的一个元素为参数,并返回一个用于排序的值。例如:
def func(x):
return x/10
这个函数用于将每个元素除以10,然后对所得结果进行排序。
如果我们有一个列表:
arr = [11, 8, 7, 23, 45, 91, 6]
那么程序可以这样写:
arr_new = sorted(arr, key=func)
这时,函数将首先对列表中的每个元素做一次除法,将除的结果排序,输出结果为:
[0.6, 0.7, 0.8, 1.1, 2.3, 4.5, 9.1]
我们还可以使用lambda函数来实现同样的功能,上面的代码可以改写为:
arr_new = sorted(arr, key=lambda x:x/10)
3. reverse
reverse 参数决定排序顺序。它是可选的,缺省为升序排序。如果reverse设置为True,则结果是降序排序。
这个参数非常简单。我们只需要在sorted函数中设置reverse=True即可实现降序排列。例如:
arr_new = sorted(arr, key=func, reverse=True)
这时候,函数会首先对列表中的每个元素做一次除法,然后将除得的结果作为关键字,按照降序排列,输出结果为:
[9.1, 4.5, 2.3, 1.1, 0.8, 0.7, 0.6]
让我们再来看一个例子。
例子:
下面的例子将展示如何使用sorted函数和lambda函数对元组进行排序。
# 定义一个元组类型的数组
data = [
("Alice", 25),
("Bob", 18),
("Charlie", 28),
("David", 23)
]
# 按照第1列元素进行排序
sorted_data = sorted(data, key=lambda x: x[0])
print("按照第1列元素升序排序: ", sorted_data)
# 按照第2列元素进行排序
sorted_data = sorted(data, key=lambda x: x[1])
print("按照第2列元素升序排序: ", sorted_data)
上面的代码定义了一个元组类型的数组。然后我们通过lambda函数对元组的 列和第二列进行排序,最终输出结果为:
按照第1列元素升序排序: [('Alice', 25), ('Bob', 18), ('Charlie', 28), ('David', 23)]
按照第2列元素升序排序: [('Bob', 18), ('David', 23), ('Alice', 25), ('Charlie', 28)]
按照第1列的元素排序后,按字典序排序,结果与初始数据相同;按照第2列排序后,年龄较小的先排,天龙大哥最年轻,排在 。
在Python中,sorted函数也可以用于对字符串进行排序。
例子:
下面的例子将展示如何对一个字符串进行排序。
s = "python"
print("原字符串:", s)
# 对字符串按照字典序降序排序
s = sorted(s, reverse=True)
print("按照字典序降序排序:", s)
# 对字符串按照ASCII码值进行排序
s = sorted(s, key=lambda x: ord(x))
print("按照ASCII码值升序排序:", s)
上面的代码首先对字符串进行了一次反转,然后按照字典序进行降序排列。 最后,我们使用lambda函数将字符串中每一个字符转换为其ASCII码值进行排序。最终输出结果如下:
原字符串: python 按照字典序降序排序: ['y', 't', 'o', 'n', 'h', 'p'] 按照ASCII码值升序排序: ['h', 'n', 'o', 'p', 't', 'y']
总体来说,sorted函数是Python中一个非常常用的内置函数,使用非常方便,可以快速地对一个可迭代对象进行排序。虽然sorted函数的默认排序方式是升序排列,但使用起来非常灵活,可以定制自己需要的排序规则。在实际应用中,sorted函数可能会成为编写Python程序不可或缺的一部分。
