函数式编程--高阶函数--sorted
定义
sorted函数可以list进行排序
#sorted可以对list进行排序 L=[3,7,-11,10,6] print(sorted(L))
sorted()
函数也是一个高阶函数,它还可以接收一个key
函数来实现自定义的排序,key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。例如按绝对值大小排序:
#接受一个abs,按照绝对值排序 print(sorted(L,key=abs))
以上两个输出结果为:
[-11, 3, 6, 7, 10]
[3, 6, 7, 10, -11]
#对字符串进行排序,默认对ASCII码的大小进行排序 names=['bob', 'about', 'Zoo', 'Credit'] print(sorted(names)) #要求忽略大小写,按字符顺序进行排序,传入一个lower函数将大写转为小写 print(sorted(names,key=str.lower)) #进行反项排序 print(sorted(names,key=str.lower,reverse=True))
以上三项的输出
['Credit', 'Zoo', 'about', 'bob'] ['about', 'bob', 'Credit', 'Zoo'] ['Zoo', 'Credit', 'bob', 'about']
以下例子中key=by_sorce 将函数作用L的每一个元素,返回对应的新 L[75,92,66,88] ,然后sorted 函数对新L进行排序
#学生成绩如下,根据姓名进行排序 L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] def by_name(t): return t[0] L2 = sorted(L, key=by_name) print(L2) #根据成绩进行排序 def by_sorce(t): return t[1] L3=sorted(L,key=by_sorce,reverse=True) print(L3)
关于python中的排序:http://www.iplaypy.com/jinjie/jj114.html