Python中的sorted函数:使用sorted函数对列表数据进行排序和排序条件自定义
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程序员的使用,提高了代码的高效性。
