Python学习札记(二十三) 函数式编程4 sorted
2017-02-16 20:58
405 查看
参考:sorted
NOTE
1.sorted,快速排序,时间复杂度O(nlogn)渐进最优.#!/usr/bin/env python3 L = [] for i in range(10): L.append(int(input())) SortedL = sorted(L) print(SortedL)
上例:sorted函数返回排序好的list。
sh-3.2# ./sorted1.py -10 2 99 78 24 -100 92 33 12 63 [-100, -10, 2, 12, 24, 33, 63, 78, 92, 99]
2.Python的sorted函数支持传入特定的函数,先将该函数作用于所有的列表元素,再进行排序。注意,该函数是用于比较大小的依据。
absortL = sorted(L, key=abs) print(absortL)
-10 2 99 78 24 -100 92 33 12 63 [2, -10, 12, 24, 33, 63, 78, 92, 99, -100]
eg.
list = [36, 5, -12, 9, -21] keys = [36, 5, 12, 9, 21]
keys排序结果 => [5, 9, 12, 21, 36] | | | | | 最终结果 => [5, 9, -12, -21, 36]
3.默认情况下,对字符串排序,是按照ASCII的大小比较的.
L1 = [] for i in range(5): L1.append(input()) print(sorted(L1))
Chen Michael Xu Li Wang ['Chen', 'Li', 'Michael', 'Wang', 'Xu']
实现忽略大小写的排序(借助lower()函数将所有字符串变为小写再比较):
print(sorted(L1, key=str.lower))
chen Li Xu Wang michael ['chen', 'Li', 'michael', 'Wang', 'Xu']
4.要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True:
chen Li Xu Wang michael ['chen', 'Li', 'michael', 'Wang', 'Xu']
['Xu', 'Wang', 'michael', 'Li', 'chen']
print(sorted(L1, key=str.lower, reverse=True))
5.使用sorted函数的关键在于key函数的实现,本质上key函数不同于C语言中的cmp函数,也就是说它不是比较型函数(返回bool),事实上key函数是将传入的参数(待排序的元素)进行某种转换并返回结果。sorted函数通过key函数将其元素逐一进行映射,并根据映射得到的序列进行排序,最后依据得到的序列对原有序列进行排序。
Practice
假设我们用一组tuple表示学生名字和成绩:L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
请用sorted()对上述列表分别按名字排序:
#!/usr/bin/env python3 L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] def by_name(t): return t[1] L2 = sorted(L, key=by_name) print(L2)
sh-3.2# ./sorted2.py [('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]
2017/2/16
相关文章推荐
- 【Python学习笔记】函数式编程:高阶函数sorted
- Python学习札记(二十二) 函数式编程3 filter & SyntaxError: unexpected EOF while parsing
- Python学习札记(二十七) 函数式编程8 偏函数
- python 学习笔记---函数式编程之高阶函数
- python2.7学习笔记(7) ——函数式编程
- 【Python学习日记】函数式编程 之 高阶函数
- 【Python学习笔记】函数式编程
- python学习笔记(四) - 函数式编程
- 【python学习】之二、函数式编程
- python学习笔记-函数式编程、迭代器和生成器
- python学习 函数式编程
- 【Python学习笔记】函数式编程:高阶函数filter
- Python学习中递归、迭代、生成器、函数式编程的思考
- Python学习笔记2:函数式编程
- Python学习9:函数式编程
- Python 函数式编程学习
- 廖雪峰python学习笔记——函数式编程
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- 【Python学习笔记】函数式编程:高阶函数
- python学习——函数式编程