浅析python的 sorted()函数

排序是在程序中经常用到的算法,python内置排序函数sorted()可以完成list排序。

举例分析:

单纯list排序

>>> sorted([100, 57, -112, 90, -221])
[-221, -112, 57, 90, 100]

sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,如绝对值函数

>>> sorted([100, 57, -112, 90, -221],key=abs)
[ 57, 90, 100,112,221]
默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面,如
>>> sorted(['alex','Bob','Zoo','grace'])
['Bob','Zoo','alex','grace']
若想实现忽略大小写排序,则可统一将首字母转换小写后排序,即 key=str.lower()
>>> sorted(['alex','Bob','Zoo','grace'], key=str.lower())
['alex',Bob','grace','Zoo']
若想实现倒序排列,则传入第三个参数 reverse=True
>>> sorted(['alex','Bob','Zoo','grace'], key=str.lower(), reverse=True)

['Zoo','grace','Bob','alex']
举例说明:
我们用一组tuple表示学生名字和成绩,L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)],用sorted()函数分别完成按姓名和分数从高到低排序
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def sort_name(t):
return t[0].lower()
def sort_score(t):
return t[1]
L1 = sorted(L, key=sort_name)
L2 = sorted(L, key=sort_score, reverse = True)
print(L1)
print(L2)

 
参考http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318230588782cac105d0d8a40c6b450a232748dc854000


 

posted on 2016-03-30 17:11  静8785  阅读(153)  评论(0编辑  收藏  举报