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

Python中的sorted函数:如何使用它来对列表进行排序?

发布时间:2023-06-19 20:39:57

在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函数是一个十分便捷的工具。掌握了这个函数之后,我们就可以轻松地对列表进行排序了。