Python中的“sorted()”函数用法及示例
Python中的“sorted()”函数是一种内置的排序函数,它可接受多种类型的可迭代对象作为参数,包括序列、集合和字典等。函数将用于排序的输入对象的迭代器中的元素依据它们的值的大小进行排序,并返回一个新的列表来存储排序后的结果。
sorted()函数共分为两种用法,一种是基于键的排序,另一种是基于自定义排序函数的排序。下面分别对这两种用法进行详细介绍。
基于键的排序
在Python中,多个内置的数据类型都支持一种叫做"key"的参数,可以通过给定一个函数来对原有数据类型进行排序。
在"sorted()"函数中,可以通过设置"key"参数,指定一个用于排序依据的函数。该函数接受列表中的每个元素,并返回一个排序所依据的值。例如下面的例子中,用于排序的"key"函数是"len",它返回列表中每个字符串的长度。
my_list = ['apple', 'banana', 'watermelon', 'pear'] sorted_list = sorted(my_list, key=len) print(sorted_list)
输出结果为:
['pear', 'apple', 'banana', 'watermelon']
如上所述,可以看到对原有列表进行排序时,是按照各个元素的长度从短至长进行的。
再看另一个例子:假设我们有一个由元组构成的列表,每个元组内有两个值,分别是学生的姓名和考试成绩。我们希望按照成绩从高到低的顺序对学生进行排名。可以使用lambda函数作为"key"参数实现这一目的。
students = [('Tom', 89), ('Jerry', 79), ('Tina', 95), ('Lucy', 85)]
sorted_students = sorted(students, key=lambda x: x[1], reverse=True)
print(sorted_students)
输出结果为:
[('Tina', 95), ('Tom', 89), ('Lucy', 85), ('Jerry', 79)]
可以看到,按照元组中的第二项成绩进行排序后,学生的名次完美排定。
基于自定义排序函数的排序
sorted()函数的第二种用法是实现自定义排序函数的排序方式。自定义排序函数是指一个函数,它根据特定的逻辑对元素进行排序,而不是默认的基于值的大小比较。
例如,对于一个字符串列表,我们希望按照字母表的顺序进行排序时,就需要自定义一个函数,将所有字符串转换为小写字母,并按照字母表的顺序进行排序。
my_list = ['CaR', 'Banana', 'apple', 'ARMOR', 'baNaNa']
def my_sort_func(x):
return x.lower()
sorted_list = sorted(my_list, key=my_sort_func)
print(sorted_list)
输出结果为:
['apple', 'ARMOR', 'BaNaNa', 'Banana', 'CaR']
在这个例子中,我们定义了一个取输入字符串的小写形式的函数"my_sort_func()"。在调用sorted()函数时,将这个函数传递给key参数。因此,在排序过程中,sorted()函数将首先将列表中的元素通过my_sort_func()函数转换为小写字母格式,然后按照字母表的顺序进行排序。最后返回排好序的结果。
总结
以上就是sorted()函数的用法及示例。无论是基于键的排序,还是基于自定义排序函数的排序,都可以通过sorted()函数轻松进行实现。它是Python中的一个强大、简单且易于使用的函数,而且有助于使程序更简洁、可读性更高。
