如何使用Python中的sorted()函数来排序列表?
Python提供了许多功能强大的内置函数,其中之一就是sorted()函数。sorted()函数可以用于对列表中的元素进行排序,无论是数字、字符串、字典还是其他数据类型。该函数的语法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是要排序的可迭代对象,key是可选的关键字函数,用于指定排序时的比较规则,reverse是可选的排序顺序参数,用于指定升序还是降序排序。下面我们将详细讲解如何使用sorted()函数来排序列表。
1. 对数字列表进行排序
下面是一个包含10个随机整数的列表:
nums = [5, 8, 1, 3, 9, 4, 2, 7, 6, 0]
我们可以使用sorted()函数对这个列表进行升序排序:
sorted_nums = sorted(nums)
print(sorted_nums)
输出结果如下:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我们也可以使用reverse参数来进行降序排序:
sorted_nums = sorted(nums, reverse=True)
print(sorted_nums)
输出结果如下:
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
2. 对字符串列表进行排序
下面是一个包含5个随机字符串的列表:
names = ['Lucy', 'Tom', 'John', 'Amy', 'Bob']
我们可以使用sorted()函数对这个列表进行升序排序:
sorted_names = sorted(names)
print(sorted_names)
输出结果如下:
['Amy', 'Bob', 'John', 'Lucy', 'Tom']
我们也可以使用key参数来指定按照字符串长度进行排序:
sorted_names = sorted(names, key=len)
print(sorted_names)
输出结果如下:
['Tom', 'Amy', 'Bob', 'John', 'Lucy']
3. 对字典列表进行排序
下面是一个包含3个字典的列表:
students = [{'name': 'Tom', 'age': 18, 'score': 90}, {'name': 'Lucy', 'age': 20, 'score': 80}, {'name': 'Bob', 'age': 19, 'score': 85}]
我们可以使用sorted()函数对这个列表按照分数score进行降序排序:
sorted_students = sorted(students, key=lambda x: x['score'], reverse=True)
print(sorted_students)
输出结果如下:
[{'name': 'Tom', 'age': 18, 'score': 90}, {'name': 'Bob', 'age': 19, 'score': 85}, {'name': 'Lucy', 'age': 20, 'score': 80}]
lambda表达式用于定义匿名函数,这里我们使用lambda表达式来定义一个以字典的score键值为关键字进行排序的函数。
4. 对自定义类对象列表进行排序
如果我们有一个自定义的类对象列表,想要按照某一个属性进行排序,也可以使用sorted()函数。下面是一个Person类对象:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'Person({self.name}, {self.age})'
下面是一个包含5个Person类对象的列表:
people = [Person('Tom', 18), Person('Lucy', 20), Person('Bob', 19), Person('Amy', 19), Person('John', 21)]
我们可以使用sorted()函数对这个列表按照年龄age进行升序排序:
sorted_people = sorted(people, key=lambda x: x.age)
print(sorted_people)
输出结果如下:
[Person(Tom, 18), Person(Bob, 19), Person(Amy, 19), Person(Lucy, 20), Person(John, 21)]
总结
在Python中,sorted()函数是一个非常常用的函数,可以用于对多种数据类型进行排序。通过合理使用sorted()函数的参数,我们可以按照自己的需求进行升序或者降序排序,无论是数字、字符串、字典还是自定义的类对象都可以进行排序。
