函数式编程的核心就是把函数当成对象来进行编程。

有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所以需要import相关模块。

map接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中一一进行处理,结果以list形式返回。

In [147]: def f(x):
.....: return x*x
.....: In [148]: r = map(f,[1,2,3,4,5,6]) In [149]: list(r)
Out[149]: [1, 4, 9, 16, 25, 36]

reduce接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而reduce可以把第二个参数每一次next方法执行的结果映射到函数中进行处理,然后返回一个计算后的值。其实质就是不断的嵌套把此层函数作为下一层函数的参数直到最后。

In [151]: from functools import reduce

In [152]: def add(x,y):
.....: return x+y
.....: In [153]: reduce(add,[1,3,4,7,9])
Out[153]: 24 In [154]: reduce(add,[1])
Out[154]: 1

filter接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中,根据true/false过滤,结果以list形式返回。

In [156]: def is_odd(n):
.....: return n % 2 == 1
.....: In [157]: list(filter(is_odd, (1, 2, 4, 5, 6, 9, 10, 15)))
Out[157]: [1, 5, 9, 15]

最新文章

  1. mac 修改command+q 退出
  2. glyphicon halflings regular ttf 报错
  3. javascript正则表达式(一)
  4. 用时间生成用户Id
  5. JAVA获取时间戳,哪个更快
  6. win7(x64)+VS2012+cocos2d-x环境的配置以及试运行
  7. gcc 生成动态库时-fpic选项是什么意思。
  8. ffmepg命令行参数
  9. SuperSocket学习笔记(二)
  10. pom.xml配置详解
  11. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
  12. .net DLL版本管理
  13. autocomplete初步使用
  14. 使用IIS调试ASP.NET网站程序
  15. vue图片被加了盗链
  16. Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more jquery-1.12.4.js:10208
  17. ubuntu 18.04下安装Hadoop
  18. MVC之——Razor语法
  19. C++与C#互调dll的实现步骤
  20. 移动端适配(3)——rem适配

热门文章

  1. Fragment中的按键监听
  2. Eclipse的自动排版设置(format)
  3. Socket的简单使用
  4. WPF 命令基础
  5. vs2012中EF6的BUG
  6. linux常用命名复习
  7. Genome2D编译方法
  8. 项目管理之道--纪我的新书《PMP项目管理认证学习指南(第4版)》出版并预祝大卖!
  9. MySQL主主双机负载均衡
  10. App.Config 和 WebConfig 特殊字符的转义码对应关系