练习
假设我们用一组 tuple 表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
假设我们用一组 tuple 表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用 sorted()对上述列表分别按名字排序
再按成绩从高到低排序
def by_name(t): return t[0] def by_score(t): return t[1] L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88),('Ava', 88)] L2=sorted(L,key=by_name) print(L2) L3=sorted(L2,key=by_score,reverse=True) print(L3)
思路:看到这个题的第一反应是,怎么能够把名字和分数分离开来,在去比较大小。
写题的时候没有理解sorted()的真正所在
sorted(L,key=(注:这里可以调用函数),reverse=(注:True让排序从大到小))
sorted()是一个排序函数,key值是为了定义自己的函数排序的规则,key中的函数是处理数据用的,
sorted()高阶函数是用来排序,默认是从小到大排列,字符比较是ASCII决定的。