# 这是学习廖雪峰老师python教程的学习笔记

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)]