[Python] Lambda 表达式
来源:互联网 发布:岑春煊 知乎 编辑:程序博客网 时间:2024/06/01 21:16
Python版本:Python 2.7.13rc1
1.普通函数和lambda表达式的区别
>>> def f(x):return x**2>>> print f(8)64
>>> g = lambda x:x**2>>> print g(8)64
Note:可以看出,f()和g做了同样一件事情,求一个数的平方值,但是要注意的是lambda定义并不包括“return”语句。还有一件要注意的事情是,lambda表达式可以放在一个函数的任意一个地方,而且根本不需要把它赋值给一个变量。
2.嵌套作用域
>>> def make_incrementor(n): return lambda x: x + n>>> f = make_incrementor(42)>>> f(0)42>>> f(1)43
以上这段代码定义了一个make_incrementor(n)的匿名函数,这个函数返回一个lambda表达式”lambda x: x + n“,其中“n”是一个增量值。
当“n”被赋予值42时,”f = make_incrementor(42)“ 就相当于”f = lambda x: x+42“。
再举一个例子,可以很清楚看明白:
>>> def make_incrementor(n): return lambda x: x + n>>> f = make_incrementor(2)>>> g = make_incrementor(6)>>> print f(42),g(42)44 48
更进一步来看:
>>> foo = [1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print filter(lambda x: x % 3 == 0, foo)[3, 6, 9]
上面这个例子中,filter()为foo list中每一个元素调用了lambda的表达式,并且返回一个由能被3整除的新的list。
同样的可以调用map()和reduce():
>>> print map(lambda x: x % 3 == 0, foo)[False, False, True, False, False, True, False, False, True]>>> print map(lambda x: x * 2 + 10, foo)[12, 14, 16, 18, 20, 22, 24, 26, 28]>>> print reduce(lambda x, y: x + y, foo)45
注意:在上面这段代码中,map()对每一个元素进行转换,reduce()做了一个sum()的作用,但是sum()的效率更高。
3.将lambda表达式作为参数
>>> def apply(f,n): print(f(n))>>> square = lambda x:x**2>>> cube = lambda x:x**3>>> apply(square,4)16>>> apply(cube,3)27
上面这段代码,将square和cube两个lambda表达式作为argument传给函数apply(f,n)。
4.嵌套lambda表达式
>>> incre_two = lambda x: x+2>>> multiply_incre_two = lambda x: incre_two(x*2)>>> print multiply_incre_two(2)6
上面这段代码可以解读为:x * 2 + 2
0 0
- python lambda表达式
- Python的Lambda表达式
- Python的Lambda表达式
- Lambda表达式之Python
- python lambda表达式
- Python lambda表达式
- python lambda表达式
- python Lambda 表达式
- python中的lambda表达式
- python lambda表达式
- Python中lambda表达式
- Python lambda表达式
- Python lambda表达式
- Python的Lambda表达式
- Python中lambda表达式
- python lambda表达式
- Python-lambda表达式
- python Lambda 表达式
- 美团技术文档
- iOS10 用户权限设置问题
- web.xml配置五个有用的过滤器
- 搜索文件和改变文件属性
- Android应用层View绘制流程与源码分析(棒的不行)
- [Python] Lambda 表达式
- JMeter 中 HTTP Cookie 管理器的使用
- 【Java笔试题】哥德巴赫猜想
- getRemoteAddr()和getRemoteHost() 区别
- 易到用车构架演进及上云探索
- mysql 给表和字段加注释
- 浮躁和压力大的时候看看这篇文章
- Android 附加服务效果图
- html 无缝轮播图完整代码