Python:lambda表达式(匿名函数)
lambda表达式:
通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
在Python中,对匿名函数提供了有限支持。以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
通过对比可以看出,匿名函数lambda x: x * x实际上就是:
>>>def f(x):
return x * x
关键字lambda表示匿名函数,冒号前面的x表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x101c6ef28>
>>> f(5)
25
同样,也可以把匿名函数作为返回值返回,比如:
>>>def build(x, y):
return lambda: x * x + y * y
练习一:用lambda表达式改写以下代码
def is_odd(n):
return n % 2 == 1 L = list(filter(is_odd, range(1, 20)))
#按照map()的写法,我的代码改写为: >>>list(map(lambda x:x%2==1,range(1,20))) #得出结果为布尔值:[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True]
因此,在此要加入filter() 函数过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表:
>>> list(filter(lambda n:n%2==1, range(1, 20))) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
练习二:
'''
列表返回lambda表达式
'''
f=[lambda x,y : x+y, lambda x,y : x-y]
print( f[0](3,5) , f[1](3,5) )
# 8,-2
print( f[0](1,3) )
#
print( f[1](1,3) )
#-2 '''
字典返回lambda表达式
'''
f={'a':lambda x,y :x+y, 'b':lambda x,y : x-y}
print( f['a'](1,2) )
# 3
print( f['b'](1,2) )
#-1
print(f['a'](1,2),f['b'](1,2))
#3 -1
 												
											Python:lambda表达式(匿名函数)的更多相关文章
- [二] java8 函数式接口详解 函数接口详解 lambda表达式 匿名函数 方法引用使用含义 函数式接口实例  如何定义函数式接口
		
函数式接口详细定义 package java.lang; import java.lang.annotation.*; /** * An informative annotation type use ...
 - java8函数式接口详解、函数接口详解、lambda表达式匿名函数、方法引用使用含义、函数式接口实例、如何定义函数式接口
		
函数式接口详细定义 函数式接口只有一个抽象方法 由于default方法有一个实现,所以他们不是抽象的. 如果一个接口定义了一个抽象方法,而他恰好覆盖了Object的public方法,仍旧不算做接口的抽 ...
 - Python lambda(匿名函数)介绍【转】
		
引用: http://www.cnblogs.com/evening/archive/2012/03/29/2423554.html 在学习python的过程中,lambda的语法时常会使人感到困惑, ...
 - lambda表达式匿名函数
		
匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用.可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. C# 中委托的发展 在 C# 1.0 中,您通 ...
 - lambda表达式 匿名函数
		
lambda函数是一种快速定义单行最小函数的方法,是从Lisp借鉴而来的,可以用在任何需要函数的地方. 基础 lambda语句中,冒号前是参数,可以有多个,用逗号分割:冒号右边是返回值. lambda ...
 - C++中对C的扩展学习新增语法——lambda 表达式(匿名函数)
		
1.匿名函数基础语法.调用.保存 1.auto lambda类型 2.函数指针来保存注意点:[]只能为空,不能写东西 3.std::function来保存 2.匿名函数捕捉外部变量(值方式.引用方式) ...
 - python  递归和匿名函数
		
1.理解函数执行流程 def foo1(b, b1=3): print("foo1 called", b, b1) def foo2(c): foo3(c) print(" ...
 - Python进阶之匿名函数(关键词lambda)
		
匿名函数 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB"," ...
 - python学习之---匿名函数,返回函数,偏函数
		
1. 返回函数: 所谓的返回函数,指的是函数作为返回值.高阶函数除了可以接受函数作为参数外,同样可以接受函数作为结果返回.以下是一个可变参数的求和例子,一般求和函数是如此这般定义的: >> ...
 
随机推荐
- spray json, jackson 转到type时多key和少key的比较
			
有组合关系的三个class定义 A { B { C {...} ... } ... } 每个class都有loadFromJson和writeAsJson方法.过去几年,三个class里的成员变量一直 ...
 - iOS try catch
			
最近看一些第三方的代码有@try,一副看不懂的样子,真心没用过,于是查了些资料收集在这里,以后遇到就不会再蒙比了.其实这东西确实不怎么用,下文有解释.Objective-C 异常机制 :-- 作用 : ...
 - FFmpeg X264的preset和tune
			
鉴于x264的参数众多,各种参数的配合复杂,为了使用者方便,x264建议如无特别需要可使用preset和tune设置.这套开发者推荐的参数较为合理,可在此基础上在调整一些具体参数以符合自己需要,手动设 ...
 - 在 Ubuntu 中安装 MySQL 指南
			
安装MySQL 在Ubuntu上可以使用Ubuntu Software Center或者apt命令来安装MySQL,两种方式都十分方便. 1. 使用Ubuntu Software Center:打开U ...
 - Repeater嵌套绑定Repeater以及内层调用外层数据
			
aspx: <table border=" style="margin-bottom: 5px" width="100%"> <as ...
 - 浏览器 User Agent字符串列表
			
http://www.73207.com/useragent/ http://www.73207.com/useragent/pages/internet-2520explorer/index.htm ...
 - Android Log缓冲区大小设置
			
当手机没有连接PC时,手机log缓冲区仍然会保存指定大小的最新log,连接pc,通过adb logcat 仍然可以拿出来 如何查看log缓缓区的大小? 通过adb logcat -g 可以查看 C:\ ...
 - Building Boost for Android with error “cannot find -lrt”
			
编辑tools/build/src/tools/gcc.jam rule setup-threading ( targets * : sources * : properties * ){ local ...
 - flex常用兼容写法
			
一般放在common.css中: .flex{ display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -ms ...
 - 一个linux命令之grep---1
			
grep 表示“匹配” 参数常用的四个 -i 匹配的文件内容忽略大小写 -R 递归的匹配文件(即在一层一层的目录中的文件中去匹配) -n 表示匹配出的行显示在文件中的行号 -H ...