python3 高阶函数基础
2017-10-11 21:27
323 查看
高阶函数的定义:
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
一个最简单的高阶函数:
def add(x, y, f): return f(x) + f(y)
map函数
map()函数接收两个参数,一个是函数,一个是
Iterable
举例:
>>> def f(x): ... return x * x ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81]
就是
map()函数中一个
f,一个是
[1,2,3,4,5,6,7,8,9]
reduce函数
reduce把一个函数作用在一个序列
[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
举个例子:
>>> from functools import reduce >>> def add(x, y): ... return x + y ... >>> reduce(add, [1, 3, 5, 7, 9]) 25
很简单的说法:就是前一个数与前一个数进行累加,最后得出总和来。
上面结合起来 可以str转int
from functools import reduce def str2int(s): def fn(x, y): return x * 10 + y def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] return reduce(fn, map(char2num, s))
用lambda函数进一步简化成
from functools import reduce def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] def str2int(s): return reduce(lambda x, y: x * 10 + y, map(char2num, s))
filter函数
用于过滤序列def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) # 结果: [1, 5, 9, 15]
sorted函数
sorted()函数就可以对list进行排序>>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36]
也可以自定义排序
>>> sorted([36, 5, -12, 9, -21], key=abs) [5, 9, -12, -21, 36 # 反向排序 >>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) ['Zoo', 'Credit', 'bob', 'about']
相关文章推荐
- Python基础-高阶函数-filter()
- Python基础8--内置高阶函数
- Python基础-高阶函数-Map-Reduce
- python基础——高阶函数
- python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数
- Python3 基础:高阶函数和map/reduce
- python基础知识(三)python高阶函数
- Python基础-高阶函数-Higher-order function
- Python基础7--高阶函数
- Python基础-高阶函数-sorted()
- 第二章(1.6)Python基础知识(高阶函数)
- Python基础-高阶函数
- Python进阶(十四)- 基础课程结课总结:高阶函数
- python基础知识5(集合,高级特性,高阶函数)
- python基础---高阶函数
- python网络基础编程笔记(一)
- (###################基础用法)python使用mysql数据库(######################)
- Python3基础 list 调换列表中的两个元素
- python基础知识-字典
- Python3基础 list sort 从小(大)到大(小)排序