Python中的sorted函数:如何使用它来对列表进行排序?
在Python中,排序是一种非常常见的操作,Python提供了几种用于排序的方法,其中最常用的是sorted函数。sorted函数可以排序列表、元组、字典、生成器等可迭代对象,它是Python内置函数之一,可以轻松高效地对列表进行排序。本文将重点介绍sorted函数的使用,帮助读者更好地掌握这个方便有用的工具。
sorted函数是一个排序函数,它可以接受一个可迭代对象作为参数,并返回一个已排序的列表。sorted函数有三个可选参数:reverse(是否降序排列,默认为False)、key(用于从元素中提取用于比较的键的函数,默认为None)、cmp(在Python 2中用于比较的函数,默认为None)。
Syntax:
sorted(iterable, key=None, reverse=False)
sorted函数的返回结果是一个排序好的列表,不会影响原来的列表,原来的列表的顺序不会改变。
下面举例说明如何使用sorted函数来对列表进行排序:
对于数值类型的列表:
1. 对于正常的数值列表,可以直接使用sorted函数进行排序:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers = sorted(numbers) print(sorted_numbers)
输出:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
2. 对于浮点数列表,需要添加key参数,让sorted函数能够正确排序:
float_numbers = [3.14, 1.41, 2.71, 1.62, 0.62] sorted_float_numbers = sorted(float_numbers, key=float) print(sorted_float_numbers)
输出:
[0.62, 1.41, 1.62, 2.71, 3.14]
可以看到,添加了key参数后,sorted函数正确地将浮点数列表排序了。
对于字符串类型的列表:
对于字符串类型的列表,可以直接使用sorted函数进行排序:
words = ['eat', 'sleep', 'repeat', 'study', 'play'] sorted_words = sorted(words) print(sorted_words)
输出:
['eat', 'play', 'repeat', 'sleep', 'study']
如果想按照字符串长度进行排序,可以添加key参数:
sorted_words_by_len = sorted(words, key=len) print(sorted_words_by_len)
输出:
['eat', 'play', 'study', 'sleep', 'repeat']
对于元组类型的列表:
对于元组类型的列表,可以使用key参数来指定按照元组中某个元素进行排序:
students = [('Alice', 20), ('Bob', 18), ('Charlie', 22), ('David', 21), ('Eva', 19)]
sorted_students_by_age = sorted(students, key=lambda x: x[1])
print(sorted_students_by_age)
输出:
[('Bob', 18), ('Eva', 19), ('Alice', 20), ('David', 21), ('Charlie', 22)]
这个例子中,使用lambda表达式作为key参数,指定按照元组的第二个元素进行排序。
对于字典类型的列表:
对于字典类型的列表,可以使用key参数来指定按照字典中某个键的值进行排序:
cars = [{'brand': 'Ford', 'year': 2015},
{'brand': 'Audi', 'year': 2011},
{'brand': 'BMW', 'year': 2016},
{'brand': 'Volvo', 'year': 2020}]
sorted_cars_by_year = sorted(cars, key=lambda x: x['year'])
print(sorted_cars_by_year)
输出:
[{'brand': 'Audi', 'year': 2011},
{'brand': 'Ford', 'year': 2015},
{'brand': 'BMW', 'year': 2016},
{'brand': 'Volvo', 'year': 2020}]
这个例子中,使用lambda表达式作为key参数,指定按照字典中的year键进行排序。
倒序排列:
如果想要倒序排列列表,则需要将reverse参数设置为True:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] reverse_sorted_numbers = sorted(numbers, reverse=True) print(reverse_sorted_numbers)
输出:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
需要注意的是,通过reverse参数进行倒序排序,排序的结果是与原列表不同的新列表。如果想要改变原列表的顺序,可以使用列表的sort方法:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] numbers.sort(reverse=True) print(numbers)
输出:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
这个例子中,使用了列表的sort方法进行排序。
总结:
通过本文的介绍,读者可以了解到sorted函数的用法和常见的参数,以及如何对不同类型的列表进行排序。当需要对列表进行排序时,sorted函数是一个十分便捷的工具。掌握了这个函数之后,我们就可以轻松地对列表进行排序了。
