python匿名函数lambda_Python中什么情况下应该使用匿名函数lambda
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相关推荐
- [cocos2d-x 3.6]如何实现“侦听触摸事件和侦听按键事件”,触摸回调函数分别在什么情况下执行
在以往的版本中,侦听触摸事件是这样写代码的: class A : public CCLayer {virtual bool init();virtual bool onTouchBegan(Touch ...
- c#中什么情况下用(int)什么情况下用Convert.ToInt32
1.c#中什么情况下用(int)什么情况下用Convert.ToInt32 ? 比如说有一个string型的3 ,要给它转换成int型的是用(int)3 ,还是用Convert.ToInt32(3 ...
- python中那些双下划线开头的函数和变量
天下苦秦久矣. 看别人的源码总是被各种下划线带晕了,总算偶得妙文,开疑解惑. 原文预估成文于2015之前,作者不详,传播过程中许多格式不幸丢失. 本人不忍佳篇失传,斗胆稍加修缮,增补格式,希望不损原意 ...
- python中那些双下划线开头得函数和变量
Python中下划线---完全解读 Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类 ...
- python功能分享_Python中非常实用的一些功能和函数分享
在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性.一些可以说是非常有用,但却没有充分利用.考虑到这一点,我编辑了一些你应该了解的Python功能特色. 带任意数量参数的函数你可能 ...
- python运行pyc文件_Python什么情况下会生成pyc文件?
作为Python爱好者,需要了解.py脚本的基本运行机制及特性: 在很多工作上Python的运行流程基本上取决于用户,因此源码不需要编译成二进制代码(否则无法实现大部分贴近用户的特性),而直接从源码运 ...
- c++ 虚函数_到底什么情况下会合成默认构造函数?
来源:https://www.cnblogs.com/QG-whz/p/4676481.html 作者:good luck 编辑:公众号[编程珠玑] 编辑注:没有构造函数的时候编译器一定会生成默认构造 ...
- 在mysql中什么情况下不能指定字符集_如何为Mysql选择合适的字符集?
MySQL服务器可以支持多种字符集,在同一台服务器,同一个数据库,甚至同一个表的不同字段都可以指定使用不同的字符集,相比Oracle等其他数据库管理系统,在同一个数据库只能使用相同的字符集,MySQL ...
- python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...
Python中strip()函数的作用是去除一个字符串前导和尾部的特定字符,并返回结果字符串. Python中strip()函数默认是删除字符串前导和尾部空格,通过设定参数,也可以去除字符串前导和尾部 ...
最新文章
- R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
- SAP MM MIGO + 311 针对预留单做转库不能修改目的地存储地点!
- iOS开发——高级技术地图功能的实现
- android字体行距,android textview设置字体的行距和字间距
- BZOJ2199: [Usaco2011 Jan]奶牛议会
- 雪妖现世:给SAP Fiori Launchpad增添雪花纷飞的效果
- [POI2007]POW-The Flood
- 无论是否使用Spring Framework,为什么我们会失败?
- python编写安装脚本_2. 编写安装脚本
- Java核心编程总结(五、线程池与死锁),淘汰了80%的Java面试者
- Linux安装tomcat并使用+热部署
- 浮动QQ在线客服代码,兼容各大浏览器
- 职场心理学-心理学第一天(非原创)
- Monte Carlo Approximations
- Centos 7 | mariadb/mysql | [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
- MFC 中 如何屏蔽Esc和Ente
- 001-2019-0124 前端Html
- 54/74系列逻辑芯片
- 一键修改 PPT 所有页面的字体设置
- java中StringTokenizer使用