如何在Python中使用内置的sorted()函数
Python中有内置的sorted()函数,它可以对可迭代对象进行排序,包括列表、元组、字典等。本文将介绍如何使用内置的sorted()函数进行排序。
1. 基本用法
sorted()函数可以接受一个可迭代对象作为参数,并返回一个排序后的列表。
a = [3, 6, 2, 8, 1, 9] b = sorted(a) print(b) # [1, 2, 3, 6, 8, 9]
如果要对一个字典进行排序,可以使用sorted()函数的key参数进行指定。
d = {'apple': 10, 'banana': 5, 'orange': 8}
b = sorted(d, key=lambda x: d[x])
print(b) # ['banana', 'orange', 'apple']
上面的例子中,sorted()函数使用了lambda表达式作为key参数传递,lambda表达式接受x作为输入,返回d[x]作为输出。这样就可以按照字典的值对字典进行排序。
2. 降序排序
sorted()函数默认是升序排序,如果要进行降序排序,可以传递一个reverse=True参数给sorted()函数。
a = [3, 6, 2, 8, 1, 9] b = sorted(a, reverse=True) print(b) # [9, 8, 6, 3, 2, 1]
3. 对元组排序
sorted()函数也可以对元组进行排序,排序依据是元组 个元素的值。
a = [(3, 4), (1, 2), (5, 6), (2, 5)] b = sorted(a) print(b) # [(1, 2), (2, 5), (3, 4), (5, 6)]
4. 对多维列表排序
如果要对多维列表进行排序,可以使用sorted()函数的key参数指定在哪个位置进行排序。
a = [[3, 4], [1, 2], [5, 6], [2, 5]] b = sorted(a, key=lambda x: x[1]) print(b) # [[1, 2], [3, 4], [2, 5], [5, 6]]
上面的例子中,sorted()函数使用了lambda表达式作为key参数传递,lambda表达式接受x作为输入,返回x[1]作为输出。这样就可以按照多维列表的第二个元素进行排序。
5. 对对象进行排序
如果要对对象进行排序,可以使用sorted()函数的key参数指定依照哪个属性进行排序。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return repr((self.name, self.age))
people = [Person('Tom', 20), Person('Jerry', 15), Person('Dylan', 18)]
sorted_people = sorted(people, key=lambda x: x.name)
print(sorted_people) # [('Dylan', 18), ('Jerry', 15), ('Tom', 20)]
上面的例子中,定义了Person类,创建了一个名为people的对象列表,列表中包含3个人的信息。通过sorted()函数的key参数指定按照姓名进行排序。
6. 更高级的排序
sorted()函数支持更复杂的排序需求,可以使用operator模块中的itemgetter()函数,结合sorted()函数进行排序。
from operator import itemgetter a = [(3, 4, 1), (1, 2, 5), (5, 6, 2), (2, 5, 4)] b = sorted(a, key=itemgetter(1, 2)) print(b) # [(1, 2, 5), (5, 6, 2), (3, 4, 1), (2, 5, 4)]
上面的例子中,使用了itemgetter()函数代替lambda表达式来指定排序的key参数。
在以上示例中,我们介绍了Python内置的sorted()函数的基本用法及其特殊用法。sorted()是一个非常强大且实用的函数,如果您的程序需要对数据进行排序操作,那么可以考虑使用这个函数。
