- Python内置的sorted()函数就可以对list进行排序。
- sorted()函数可对列表可以接收一个key函数来实现自定义的排序。
- key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。
- 要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True。
sorted()三个参数,第一个列表,第二个key函数,第三个是否反向排序,后两个参数可缺省。如:
sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
注意:
- sorted()函数是一个高阶函数,用sorted()排序的关键在于实现一个映射函数。
- 默认情况下,对字符串排序,是按照ASCII的大小比较的。
练习题:
假设我们用一组tuple表示学生名字和成绩:
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按:(1)名字排序;(2)按成绩从高到低排序。
#_*_coding:utf-8_*_
L=[('Bob',75),('Adam',92),('Bart',66),('Lisa',88)] #list中的元素是一个个tuple(元组)
def by_name(t):#传入的参数是tuple
return t[0] #把tuple中的第一个元素取出来
def by_score(t):#传入的参数是tuple
return t[-1] #把tuple中的倒数一个元素取出来
print sorted(L,key=by_name)
print sorted(L,key=by_score,reverse=True)
运行结果:
[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]
网友评论