"""
sorted(iterable, key=None, reverse=False)
"""
# 参数说明:
# iterable -- 可迭代对象。
# key -- 关键函数:key形参用来指定在进行比较之前要在每个列表元素上进行调用的函数。
# key 形参的值应该是一个函数,返回一个用于排序的键。这种技巧速度很快,因为对于每个输入记录只会调用一次key函数。
# reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
# 返回值
# 返回重新排序的列表。
# 示例代码1
string = 'This is a test string from Andrew'
print(sorted(string.split())) # ['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']
print(sorted(string.split(), key=str.lower)) # ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
# 示例代码2
# 一种常见的模式是使用对象的一些索引作为键对复杂对象进行排序。例如:
data_tuples = [
('白展堂', '白玉盗圣', 26),
('李大嘴', '知名厨子', 22),
('吕秀才', '关中大侠', 21),
]
print(sorted(data_tuples, key=lambda tps: tps[2], reverse=True)) # sort by the three para!
# 输出:
# [('白展堂', '白玉盗圣', 26), ('李大嘴', '知名厨子', 22), ('吕秀才', '关中大侠', 21)]
# 示例代码3
class Student:
def __init__(self, name, grade, age):
self.name = name
self.grade = grade
self.age = age
def __repr__(self):
return repr((self.name, self.grade, self.age))
student_objects = [
Student('白展堂', '葵花点穴', 26),
Student('李大嘴', '秀莲神掌', 21),
Student('燕小六', '七舅姥爷', 19),
]
print(sorted(student_objects, key=lambda student: student.age)) # sort by age
# [('燕小六', '七舅姥爷', 19), ('李大嘴', '秀莲神掌', 21), ('白展堂', '葵花点穴', 26)]