1.python内置的sorted()函数可以对list进行排序: sorted([1,7,5,-6,3])>>>[-6, 1, 3, 5, 7]
sorted()是一个高阶函数,可以接收一个key函数,来实行自定义排序。例如按绝对值大小排序:
>>> sorted([1,7,5,-6,3],key = abs)
[1, 3, 5, -6, 7]
2.对英文字符串按字母顺序进行排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']
3.要进行反向排序,不必改动key函数,可以传入参数reverse=True:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower,reverse = True)
['Zoo', 'Credit', 'bob', 'about']
小结:
sorted是一个高阶函数,用sorted()排序的关键在于实现一个映射函数。
例题:L = [('Bob', 75), ('Adam', 92), ('Wart', 66), ('Lisa', 88)]
对L进行按字母顺序排序
def by_name(t):
return t[0]
L2 = sorted(L,key = by_name)
print(L2)--->>>[('Adam', 92), ('Bob', 75), ('Lisa', 88), ('Wart', 66)]
对L进行按数字大小排序
def by_num(t):
return t[1]
L3 = sorted(L,key = by_num)
print(L3)--->>>[('Wart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]
小结:通过以上例子发现,sorted(L,key)中,key是依次作用于L中的元素,key函数指定了作用于L元素的方法。结合下面的图片,可能会有更深的理解。