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

Python内置sorted函数的用法和实例分析

发布时间:2023-06-01 05:41:59

Python内置了一个sorted函数,用于对可迭代对象进行排序操作,包括列表、元组、字符串等。使用sorted函数,可以实现升序排列、降序排列、自定义排序规则等功能。

1. sorted函数的用法

sorted函数的语法格式如下:

sorted(iterable, key=None, reverse=False)

其中,iterable表示所需要排序的可迭代对象;key是一个函数,用于指定排序规则,它接受一个参数并返回一个值,该值将作为排序的依据;reverse表示是否需要反转排序结果,它的默认值是False,表示升序排列。

2. sorted函数的实例分析

现在我们来看几个排序实例,分别展示sorted函数的基本用法和高级用法。

(1)升序排列

a = [5,3,1,6,8,7,2,4]

print(sorted(a))  # [1, 2, 3, 4, 5, 6, 7, 8]

以上代码中,我们创建了一个包含8个整数元素的列表a,表示排序之前的数据。然后,通过sorted函数对列表a进行排序,得到一个升序排列的排序结果。

(2)降序排列

a = [5,3,1,6,8,7,2,4]

print(sorted(a, reverse=True))  # [8, 7, 6, 5, 4, 3, 2, 1]

这里,我们将reverse设置为True,表示需要对列表a进行降序排列。

(3)按照字符串长度排序

a = ["hello", "hi", "hey", "world"]

print(sorted(a, key=len))  # ['hi', 'hey', 'hello', 'world']

在这个例子中,我们将key设置为len,表示按照字符串的长度作为排序规则。由于len是一个内置函数,接受一个字符串参数,并返回该字符串的长度值,因此这里的key=len可以实现按照字符串长度排序。

(4)按照字典序排序

a = ["hello", "hi", "hey", "world"]

print(sorted(a, key=str.lower))  # ['hello', 'hey', 'hi', 'world']

这里,我们将key设置为str.lower,表示按照字符串的字典序排列。str.lower也是一个内置函数,它将字符串全部转换为小写字母,并返回结果。因此,这里的key=str.lower可以实现按照字典序排列。

(5)按照多个排序规则排序

a = [

    {"name": "Tom", "age": 18},

    {"name": "Bob", "age": 20},

    {"name": "Jack", "age": 18},

    {"name": "Rose", "age": 19},

]

print(sorted(a, key=lambda x: (x["age"], x["name"])))  

# [{'name': 'Jack', 'age': 18}, {'name': 'Tom', 'age': 18}, {'name': 'Rose', 'age': 19}, {'name': 'Bob', 'age': 20}]

现在我们来看一个更高级的例子,它演示了如何使用lambda表达式,实现按照多个排序规则进行排序。

在这个例子中,我们有一个列表a,每个元素是一个字典,表示一个人的信息(包括姓名和年龄)。我们将要对这个列表按照年龄和姓名进行排序,先按照年龄从小到大排序,如果年龄相同,则按照姓名的字典序排列。

key=lambda x: (x["age"], x["name"])表示先按照x["age"]的值进行排序,如果值相同,则按照x["name"]的值进行排序。注意,这里的lambda表达式返回一个元组,因此sorted函数会将元素一一比较,直到找到不同的为止。

以上是sorted函数的基本用法和高级用法的实例分析,可以看出,sorted函数非常方便易用,同时也具有很强的灵活性。熟练掌握这个函数,可以让我们轻松处理各种排序任务。