1、概览
Python内置的sorted()函数可以对list进行排序。
sorted()函数也是一个高阶函数,它可以接收一个key函数来实现自定义的排序,key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序
# 直接排序
>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
# 接受key函数排序
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
# 按 字母表 顺序排序
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) # sorted默认是按 ASCII 码排序,而 Z>a ,所以需要加key函数
['about', 'bob', 'Credit', 'Zoo']
2、例子
1、假设我们用一组tuple表示学生名字和成绩:L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按名字排序:
# -*- coding: utf-8 -*-
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
#按姓名排序
def by_name(t):
return t[0]
#按成绩排序。-t[1],则分数越高,加上负号就越小,就越靠前
def by_score(t):
return -t[1]
#测试
L2 = sorted(L, key=by_name)
print(L2)
#按姓名排序
[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
#按成绩排序
[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]
原文地址:http://blog.51cto.com/12758568/2115996