当然可以,以下是更多关于Python中排序功能的例子,涵盖不同的数据类型和排序规则。
1. 列表(List)排序
字符串列表,按字典序排序
fruits = ['banana', 'apple', 'orange', 'mango']
sorted_fruits = sorted(fruits)
print(sorted_fruits) # 输出: ['apple', 'banana', 'mango', 'orange']
数字列表,降序排序
numbers = [3, 1, 4, 1, 5, 9, 2]
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc) # 输出: [9, 5, 4, 3, 2, 1, 1]
2. 自定义对象列表排序
假设你有一个Person
类,包含姓名和年龄,你想根据年龄排序。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"{self.name}: {self.age}"
people = [Person('Alice', 30), Person('Bob', 25), Person('Charlie', 35)]
# 按年龄排序
sorted_people = sorted(people, key=lambda person: person.age)
for person in sorted_people:
print(person)
# 输出:
# Bob: 25
# Alice: 30
# Charlie: 35
3. 元组(Tuple)列表排序
假设你有一个元组列表,每个元组包含姓名和分数,你想根据分数排序。
students = [('Alice', 88), ('Bob', 92), ('Charlie', 78), ('Diana', 81)]
# 按分数排序
sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students) # 输出: [('Charlie', 78), ('Diana', 81), ('Alice', 88), ('Bob', 92)]
# 如果要降序排序
sorted_students_desc = sorted(students, key=lambda student: student[1], reverse=True)
print(sorted_students_desc) # 输出: [('Bob', 92), ('Alice', 88), ('Diana', 81), ('Charlie', 78)]
4. 字典(Dictionary)按键或值排序
虽然字典本身是无序的,但你可以通过sorted()
函数对字典的键或值进行排序。
按键排序
my_dict = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
sorted_keys = sorted(my_dict.keys())
print(sorted_keys) # 输出: ['apple', 'banana', 'orange', 'pear']
按值排序
sorted_items_by_value = sorted(my_dict.items(), key=lambda item: item[1])
print(sorted_items_by_value) # 输出: [('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)]
5. 列表推导式与排序结合
有时,你可能想先对列表进行筛选,然后再排序。
numbers = [1, -2, 3, -4, 5, -6, 7]
# 先筛选正数,再排序
sorted_positive_numbers = sorted([num for num in numbers if num > 0])
print(sorted_positive_numbers) # 输出: [1, 3, 5, 7]
这些例子展示了Python中排序功能的多样性和灵活性,可以应用于各种数据类型和排序规则。