1. 利用列表内置sort方法
print("【sort升序】")
my_list = [10, 9, 6, 5, 7, 8, 4, 3, 2, 1]
my_list.sort()
print(my_list)
print("【sort降序】")
my_list.sort(reverse=True)
print(my_list)
people = [
Person("Alice", 25),
Person("Bob", 20),
Person("Charlie", 30),
Person("Dave", 25)
]
print("【sort -> lambda对象升序】")
people.sort(key=lambda x: x.age)
print(people)
print("【sort -> lambda对象降序】")
people.sort(key=lambda x: x.age, reverse=True)
print(people)
2. 利用sorted函数
print("【sorted升序】")
new_list = sorted(my_list)
print(new_list)
print("【sorted降序】")
new_list = sorted(my_list, reverse=True)
print(new_list)
print("【sorted -> lambda升序】")
new_list = sorted(my_list, key=lambda x: x)
print(new_list)
print("【sorted -> lambda降序】")
new_list = sorted(my_list, key=lambda x: -x)
print(new_list)
print("【sorted -> lambda对象升序】")
new_list = sorted(people, key=lambda x: x.age)
print(new_list)
print("【sorted -> lambda对象降序】")
new_list = sorted(people, key=lambda x: x.age, reverse=True)
print(new_list)
3. 利用operate模块的itemgetter()函数
print("【sorted -> itemgetter按第2个元素升序】")
my_list = [('apple', 3), ('banana', 1), ('orange', 2), ('pear', 4)]
new_list = sorted(my_list, key=itemgetter(1))
print(new_list)
4. 多个排序关键字【第一个排序相同时,看第二个】
print("【多字段排序:年龄升序,工资升序】")
people = [
Person2("Alice", 25, 5000),
Person2("Bob", 20, 6000),
Person2("Charlie", 30, 4000),
Person2("Dave", 25, 5500)
]
new_list = sorted(people, key=lambda p: (p.age, p.salary))
print(new_list)
print("【多字段排序:年龄降序,工资降序】")
new_list = sorted(people, key=lambda p: (-p.age, -p.salary))
print(new_list)