【关于Python中排序功能的例子】

当然可以,以下是更多关于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中排序功能的多样性和灵活性,可以应用于各种数据类型和排序规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值