python3 高阶函数基础
来源:互联网 发布:乐知在线英语免费 编辑:程序博客网 时间:2024/06/01 21:13
高阶函数的定义:
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
一个最简单的高阶函数:
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 reducedef 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 reducedef 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 == 1list(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']
阅读全文
0 0
- python3 高阶函数基础
- Python3 高阶函数
- Python3 基础:高阶函数和map/reduce
- python3中的一些数据结构和高阶函数(python3.5)
- Python3学习(11)--高阶函数
- Python3 基础:定义函数
- python3基础-函数
- Python3学习(12)--高阶函数 (二)
- Python3中的高阶函数(map,reduce,filter,sorted)
- Python3基础(五) 函数
- Python基础7--高阶函数
- Python基础8--内置高阶函数
- scala基础26-高阶函数
- pyhotn3入门基础-13 高阶函数
- python基础2之高阶函数
- python基础3之高阶函数
- Spark基础-Scala高阶函数
- JavaScript基础之高阶函数
- 【NOJ】[1010] 魔法少女
- python 实现打印10000以内所有素数
- Spring AOP实现
- Python 递归,遍历文件夹有层次感
- 项目第二天(补)
- python3 高阶函数基础
- android调用拨号程序
- DrawerArrowDrawable + FragmentTabHost +PagerSlidingTabStrip 高仿开源中国客户端
- 用python实现5种不同回归方法
- Android Service服务
- jdbc事务和事务的隔离级别
- 笔试10.11
- springcloud(十)
- 前端图片加载优化