map 魔法 reduce魔法
来源:互联网 发布:淘宝枪模型可以打 编辑:程序博客网 时间:2024/04/24 18:31
- 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,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。
你可能会想,不需要map()函数,写一个循环,也可以计算出结果:
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
L.append(f(n))
print(L)
的确可以,但是,从上面的循环代码,能一眼看明白“把f(x)作用在list的每一个元素并把结果生成一个新的list”吗?map函数相当于人体加工厂,把每一个小孩(原list)透过黑魔法(f()函数),念出神奇咒语,变成了大人(新的List)。不要太神奇啊!
所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9'] - reduce的用法。reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) ; 这是一个奇怪的机器(f()),它一次必须施法两个跟在后面鱼塘(list)里的两头飞猪,然后鱼塘里飞猪排着队让其施法加工成牛排。 - 注:map 函数和reduce函数最重要的是里面的函数,这是他们神奇的地方!
0 0
- map 魔法 reduce魔法
- 魔法
- 魔法
- map例子:魔法咒语问题
- 字典魔法
- 轻井泽魔法
- 魔法相册
- 魔法豌豆
- 魔法秀
- 魔法赋值
- Git 魔法
- 魔法效果
- 魔法数字
- 魔法树
- 框架魔法
- 魔法数字
- js魔法
- Ruby 魔法
- 一些鲜为人知的编程真相
- codeforces 251D
- 理想团队
- adt bundle for mac 环境配置
- To be a up-and-up OpenStack Developer
- map 魔法 reduce魔法
- [翻译]MySQL5.0用户手册——第三章:快速入门
- HBase 伪分布式安装配置
- Java千百问_04异常处理(003)_如何抛出异常
- photoshop
- Android Studio如何发布APK
- CUDA笔记一编程模型
- 基本语句及栗子
- 当教育遇到虚拟现实,Nearpod这家公司是怎么去做的?