lambda函数一般是在函数式编程中使用的。通常学习的C/C++/Java等等都是过程式编程,所以不常接触lambda函数。

其实这货在C++中已经有所运用了,如果对stl的迭代器比较熟悉的话,就会知道里头的foreach等函数,需要给一个函数,这对于C/C++这种古老的语言来说比较痛苦,一般是在主函数外再写一个函数,然后传入函数指针,看起来非常不直观。boosts用一些特殊的语法技巧实现了C++的lambda。

举个栗子,对于这样一个list L,求L中大于3的元素集合L = [1, 2, 3, 4, 5]

对于过程式编程,通常会这么写L3 = []

for i in L:

if i > 3:

L3.append(i)

而对于函数式变成,只需要给filter函数一个判断函数就行了def greater_than_3(x):

return x > 3

L3 = filter(greater_than_3, L)

由于这个判断函数非常简单,用def写起来太累赘了,所以用lambda来实现就非常简洁、易懂L3 = filter(lambda x: x > 3, L)

这是个很简单的例子,可以看出lambda的好处。lambda函数更常用在map和reduce两个函数中。

当然,lambda函数也不见得都好,它也可以被用得很复杂,比如这个问题 http://segmentfault.com/q/10100000001... 的答案,可以用python这样一句解决,这个lambda函数看起来那的确是挺辛苦的。from itertools import product

map(lambda p: ''.join(i + j for i, j in zip('abcd', p)) + 'e', product(['.', ''], repeat = 4))

python匿名函数lambda_Python中什么情况下应该使用匿名函数lambda相关推荐

  1. [cocos2d-x 3.6]如何实现“侦听触摸事件和侦听按键事件”,触摸回调函数分别在什么情况下执行

    在以往的版本中,侦听触摸事件是这样写代码的: class A : public CCLayer {virtual bool init();virtual bool onTouchBegan(Touch ...

  2. c#中什么情况下用(int)什么情况下用Convert.ToInt32

    1.c#中什么情况下用(int)什么情况下用Convert.ToInt32   ? 比如说有一个string型的3 ,要给它转换成int型的是用(int)3 ,还是用Convert.ToInt32(3 ...

  3. python中那些双下划线开头的函数和变量

    天下苦秦久矣. 看别人的源码总是被各种下划线带晕了,总算偶得妙文,开疑解惑. 原文预估成文于2015之前,作者不详,传播过程中许多格式不幸丢失. 本人不忍佳篇失传,斗胆稍加修缮,增补格式,希望不损原意 ...

  4. python中那些双下划线开头得函数和变量

    Python中下划线---完全解读 Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类 ...

  5. python功能分享_Python中非常实用的一些功能和函数分享

    在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性.一些可以说是非常有用,但却没有充分利用.考虑到这一点,我编辑了一些你应该了解的Python功能特色. 带任意数量参数的函数你可能 ...

  6. python运行pyc文件_Python什么情况下会生成pyc文件?

    作为Python爱好者,需要了解.py脚本的基本运行机制及特性: 在很多工作上Python的运行流程基本上取决于用户,因此源码不需要编译成二进制代码(否则无法实现大部分贴近用户的特性),而直接从源码运 ...

  7. c++ 虚函数_到底什么情况下会合成默认构造函数?

    来源:https://www.cnblogs.com/QG-whz/p/4676481.html 作者:good luck 编辑:公众号[编程珠玑] 编辑注:没有构造函数的时候编译器一定会生成默认构造 ...

  8. 在mysql中什么情况下不能指定字符集_如何为Mysql选择合适的字符集?

    MySQL服务器可以支持多种字符集,在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以指定使用不同的字符集,相比Oracle等其他数据库管理系统,在同一个数据库只能使用相同的字符集,MySQL ...

  9. python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...

    Python中strip()函数的作用是去除一个字符串前导和尾部的特定字符,并返回结果字符串. Python中strip()函数默认是删除字符串前导和尾部空格,通过设定参数,也可以去除字符串前导和尾部 ...

最新文章

  1. R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
  2. SAP MM MIGO + 311 针对预留单做转库不能修改目的地存储地点!
  3. iOS开发——高级技术地图功能的实现
  4. android字体行距,android textview设置字体的行距和字间距
  5. BZOJ2199: [Usaco2011 Jan]奶牛议会
  6. 雪妖现世:给SAP Fiori Launchpad增添雪花纷飞的效果
  7. [POI2007]POW-The Flood
  8. 无论是否使用Spring Framework,为什么我们会失败?
  9. python编写安装脚本_2. 编写安装脚本
  10. Java核心编程总结(五、线程池与死锁),淘汰了80%的Java面试者
  11. Linux安装tomcat并使用+热部署
  12. 浮动QQ在线客服代码,兼容各大浏览器
  13. 职场心理学-心理学第一天(非原创)
  14. Monte Carlo Approximations
  15. Centos 7 | mariadb/mysql | [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
  16. MFC 中 如何屏蔽Esc和Ente
  17. 001-2019-0124 前端Html
  18. 54/74系列逻辑芯片
  19. 一键修改 PPT 所有页面的字体设置
  20. java中StringTokenizer使用

热门文章

  1. .c文件和.h文件之间的联系
  2. Coinlist要闻:即将到来的以太坊合并的风险有多大?
  3. 客户贷后还款提醒优化项目
  4. EOS的经济模型是什么?
  5. https server
  6. 安防网络摄像头互联网直播录像设置永久储存却只能播放一半问题解决
  7. Cmn递推函数c语言,Cmn排列组合 高三数学知识点总结归纳5篇精选
  8. python3-多线程
  9. 浅谈Jsch SSH2
  10. veket linux应用软件,Veket下载_Veket Linux(开源Linux操作系统)V5.192D完整版