详细内容请参考廖雪峰官网,此处只是一些摘抄,心得与练习的coding。
- Python内置的
sorted()
函数就可以对list进行排序:>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36]
sorted()
函数也是一个高阶函数,它还可以接收一个key
函数来实现自定义的排序,例如按绝对值大小排序:>>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36]
- 这里必须强调的是sorted只会把第一个参数list的元素逐个传入到key指定的函数中,并不是把整个List传入。
- 要进行反向排序,不必改动key函数,可以传入第三个参数
reverse=True
:>>> sorted([‘bob‘, ‘about‘, ‘Zoo‘, ‘Credit‘], key=str.lower, reverse=True) [‘Zoo‘, ‘Credit‘, ‘bob‘, ‘about‘]
- 用
sorted()
排序的关键在于实现一个映射函数。 - 练习
- 假设我们用一组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] L2 = sorted(L, key=by_name) print(L2)
- 再按成绩从高到低排序:
# -*- coding: utf-8 -*- L = [(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66), (‘Lisa‘, 88)] def by_score(t): return t[1] L2 = sorted(L, key=by_score) print(L2)
- 假设我们用一组tuple表示学生名字和成绩:
原文地址:https://www.cnblogs.com/ChrisK/p/9462846.html
时间: 2024-09-30 04:23:03