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

Python中的sorted函数:使用sorted函数对列表数据进行排序和排序条件自定义

发布时间:2023-06-23 19:03:07

Python中的sorted函数是一个非常重要的函数,用于对列表数据进行排序。当我们需要按照一定的规则对列表数据进行排序时,sorted函数非常实用。它可以根据指定的排序方式对列表进行排序,并返回一个新的排序后的列表对象。

一、使用sorted函数对列表数据进行排序

1.默认升序排序

默认的sorted函数使用元素自身的大小来对列表中的元素进行升序排序。sorted函数的语法格式如下:

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

其中,iterable表示需要进行排序的列表,key是一个可选的排序函数,reverse表示是否使用降序排序。

例如,下面的示例代码将一个数字列表按照升序排序:

my_list = [5, 3, 8, 6, 7, 1, 9, 2, 4]
sorted_list = sorted(my_list)
print(sorted_list)

输出结果为:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.使用key参数进行自定义排序

使用key参数可以对元素进行自定义排序。排序时,key参数值应该是一个可调用的函数,接受元素作为参数并返回用于排序的值。

例如,下面的示例代码将一个字符串列表按照字符串长度进行排序:

my_list = ['apple', 'banana', 'orange', 'watermelon', 'peach', 'grape']
sorted_list = sorted(my_list, key=len)
print(sorted_list)

输出结果为:

['apple', 'peach', 'grape', 'banana', 'orange', 'watermelon']

3.使用reverse参数进行降序排序

默认情况下,sorted函数对列表进行升序排序。如果需要进行降序排序,只需要将reverse参数设置为True即可。

例如,下面的示例代码将一个数字列表按照降序排序:

my_list = [5, 3, 8, 6, 7, 1, 9, 2, 4]
sorted_list = sorted(my_list, reverse=True)
print(sorted_list)

输出结果为:

[9, 8, 7, 6, 5, 4, 3, 2, 1]

二、使用sorted函数对列表数据进行自定排序

在sorted函数中,我们可以通过key参数,自定义排序的方式。key参数需要传递一个函数作为其参数,实现自定义的排序方式。

例如,下面的示例代码,将包含学生信息的列表,按照每个学生的年龄进行排序:

students = [
    {'name': 'tom', 'age': 22},
    {'name': 'jerry', 'age': 18},
    {'name': 'lucy', 'age': 20},
    {'name': 'lily', 'age': 19},
    {'name': 'bob', 'age': 21}
]

def sort_key(item):
    return item['age']

sorted_students = sorted(students, key=sort_key)
print(sorted_students)

输出结果为:

[{'name': 'jerry', 'age': 18}, {'name': 'lily', 'age': 19}, {'name': 'lucy', 'age': 20}, {'name': 'bob', 'age': 21}, {'name': 'tom', 'age': 22}]

在这个示例代码中,我们定义了一个sort_key函数,该函数将学生列表中的年龄作为排序依据。最后,使用sorted函数进行排序,并将排序后的结果保存在sorted_students中。

当然,有些情况下,我们需要对多个关键字进行排序。例如,当年龄相同时,我们可能需要按照学生姓名进行排序。这个时候,我们可以返回一个元组,元组中包含所有需要排序的关键字,sorted函数会按照元组中的元素顺序进行排序。

例如,下面是一个按照学生年龄和姓名进行排序的示例代码:

students = [
    {'name': 'tom', 'age': 22},
    {'name': 'jerry', 'age': 18},
    {'name': 'lucy', 'age': 20},
    {'name': 'lily', 'age': 19},
    {'name': 'bob', 'age': 21}
]

def sort_key(item):
    return (item['age'], item['name'])

sorted_students = sorted(students, key=sort_key)
print(sorted_students)

输出结果为:

[{'name': 'jerry', 'age': 18}, {'name': 'lily', 'age': 19}, {'name': 'lucy', 'age': 20}, {'name': 'bob', 'age': 21}, {'name': 'tom', 'age': 22}]

在这个示例代码中,我们将sort_key函数修改为返回一个包含年龄和姓名的元组。这样,在按照年龄排序的同时,按照姓名进行排序。最后,使用sorted函数进行排序,并将排序后的结果保存在sorted_students中。

通过上述示例,可以看到,通过自定义的函数,我们可以按照任意方式进行排序。sorted函数的这个特点,极大地方便了Python程序员的使用,提高了代码的高效性。