http://blog.csdn.net/pipisorry/article/details/38687763

Python 不是也不大可能会成为一种函数式编程语言,但是它支持许多有价值的函数式编程语言构建。也有些表现得像函数式编程机制但是从传统上也不能被认为是函数式编程语言的构建。Python提供的以 4 种内建函数和 lambda 表达式的形式出现。

内建函数 apply()、filter()、map()、reduce()。但是列表的综合使用的引入,部分被摈弃。

匿名函数与 lambda

偏函数应用

[Python核心编程2ed.pdf]

皮皮Blog

python 匿名函数与 lambda表达式

除非赋值给一个局部变量,这样的对象也不会在任何的名字空间内创建名字.)

一个完整的 lambda“语句”代表了一个表达式,这个表达式的定义体必须和声明放在同一行。我们现在来演示下匿名函数的语法:
lambda [arg1[, arg2, ... argN]]: expression

lambda只是一个表达式,函数体比def简单很多。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

lambda 表达式返回可调用的函数对象。

例子:

[Python中lambda表达式学习]

皮皮Blog

apply函数

apply(func[, nkw][, kw])

在python1.6 中有效的摈弃了 apply()。 这个函数将来会逐步淘汰,在未来版本中最终会消失。

皮皮Blog

map函数

map大多数的for循环可以用map来代替,用法是:map(func,seq),对seq中的每个元素进行操作,具体什么操作在func里定义。
我们以前是这么写for循环的:
array = [1, 2, 3]
square_array = []
for i in array:
    square_array.append(i ** 2)

改用map:
array = [1, 2, 3]
square_array = map(lambda i: i ** 2, array)

map的第一个参数是lambda表达式,冒号前面的i作为形参,来自于array中的元素,冒号后面就是要返回的值。
当然你也可以使用列表推导式来代替:
array = [1, 2, 3]
square_array = [i ** 2 for i in array]

皮皮Blog

filter函数

filter用法与map类似:filter(func,seq),对seq中的元素进行过滤,返回符合条件的那些元素。
比如返回array = [1, 2, 3, 4]中的所有奇数:
print filter(lambda i: i % 2, array)
这里是对2取余,返回结果为True的元素。那么什么情况下结果为True?Python里面不为0,None或者null都是True。所以结果就是,偶数是False,奇数是True,返回所有奇数。
列表推导式方案:
print [i for i in array if i % 2 != 0]

皮皮Blog

reduce函数

reduce用法:reduce(func,seq),对seq中的每个元素进行func操作,最后汇总返回一个值。
求array = [1, 2, 3]所有元素的和:
print reduce(lambda x, y: x + y, array)
reduce会先将array里面的头两个数分别作为x和y,求它们的和,然后把它的结果和第三个相加,再把结果和第四个相加,直到最后一个元素。
求array = [1, 2, 3]中的最大值:
print reduce(lambda x, y: x if x > y else y, array)
求strings = ["abc", "abcd", "def"]中”abc”出现的总次数:
print reduce(lambda count, str: count + str.count("abc"), strings, 0)
第三个参数0是count的初始值。

偏函数与闭包

偏函数

闭包[python变量及其作用域,闭包 ]

from:http://blog.csdn.net/pipisorry/article/details/38687763

ref:

python函数式编程:apply, map, lambda和偏函数相关推荐

  1. Python函数式编程:map/reduce

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作为一种抽象程度极高的编程范式,函数式编程的最大特点就是允许函数本 ...

  2. Python函数式编程-map()、zip()、filter()、reduce()、lambda()

    三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str map函数 map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function, seq ...

  3. Python函数式编程中map()、reduce()和filter()函数的用法

    Python中map().reduce()和filter()三个函数均是应用于序列的内置函数,分别对序列进行遍历.递归计算以及过滤操作.这三个内置函数在实际使用过程中常常和"行内函数&quo ...

  4. Python函数式编程,map/reduce,filter和sorted

    什么是函数式编程? 与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式. 最主要的特征是,函数是第一等公 ...

  5. Python函数式编程简介(五)偏函数

    5.偏函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我 ...

  6. Python函数式编程——map()、reduce()

    提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理大规模海量数据,并在之后广泛的应用于Google的各项应用中,2006年A ...

  7. 【Python函数式编程】——偏函数(Partial function)

    Python函数式编程--偏函数   Python的 functools 模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一 ...

  8. python函数式编程读取数据-python学习笔记9:函数式编程

    函数式编程(FunctionalProgramming) 基于lambda演算的一种编程方式 程序中只有函数 函数可以作为参数,同样可以作为返回值 纯函数式编程语言: LISP, Haskell Py ...

  9. 函数式编程语言python-10分钟学会python函数式编程

    原标题:10分钟学会python函数式编程 在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程.你也将了解列表推导和其它形式的推导. 函数范式 在命令式范式中,通过为计算机提供 ...

  10. python编写函数_浅谈Python 函数式编程

    匿名函数lambda表达式 什么是匿名函数? 匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑.lambda 本质上是一个 ...

最新文章

  1. java中JVM的原理【转】
  2. DotNetty 实现 Modbus TCP 系列 (一) 报文类
  3. matlab在常微分方程的应用,MATLAB在常微分方程上应用.ppt
  4. chrome和safari_私人浏览器-如何在Chrome和Safari中使用隐身模式
  5. 读CLR via C#总结(13) 详谈泛型
  6. mysql 修改前缀_批量修改mysql的表前缀
  7. vsftpd配置权限问题
  8. Mac下nginx的安装记录(亲测可用)
  9. 235款鼠标样式免费下载
  10. ubuntu18.04声音dummy output的问题
  11. 薅羊毛php源码,基于AutoJs实现的薅羊毛App专业版源码大分享---更新啦
  12. HTTPS(三)之JAVA 不校验HTTPS服务器证书
  13. 中式红木装修,古雅灵动、温婉雅致、独具风情
  14. 一种新型免费无损图片格式FLIF
  15. ARTIX-7 XC7A35T实验项目之 串口发送
  16. 城南花未开,老程已不在;
  17. 水库水位库容监测系统方案
  18. vue实现九宫格效果
  19. Android usb-serial-for-android驱动库 实现(读卡器rs232串口转usb)插入开发板读取数据
  20. nrf52832学习笔记(3)设置发射功率

热门文章

  1. Linux下进行源码安装时如何避免找不到那些使用--prefix指定目录安装的依赖
  2. 设计模式之六 --- 抽象工厂模式(Abstract Factory)
  3. 检测浏览器是否支持ajax ===小代码
  4. SQL中JOIN操作后接ON和WHERE关键字的区别
  5. 支持向量机原理(三)线性不可分支持向量机与核函数
  6. 个人永久性免费-Excel催化剂功能第31波-数量金额分组凑数功能,财务表哥表姐最爱...
  7. Vagrant 手册之 Provisioning - file 配置程序
  8. Java中使用开源库JSoup解析HTML文件实例
  9. 巧用BroadcastReceiver实现开机“自”启动
  10. ARP欺骗原理 [转]