λ表达式
在python中使用lambda表达式,方便使用匿名函数,省去了函数的定义,使代码更加精简。
例子:
>>> def ds(x):
return 2*x+1
>>> ds(5)
11
怎么用λ表达式来实现呢?
>>> lambda x:2*x+1
<function <lambda> at0x00000000030B8840>
返回的是一个函数对象,然后用一个标签来获取其值即可。
>>> g = lambda x:2*x+1
>>> g(2)
5
对于一些比较抽象而且整个程序执行下来此函数执行次数很少,而且此函数很简单,则推荐使用lambda表达式。
不需要跳到定义部分查看的函数定义,查看代码简单方便。
过滤器filter
filter(function or None, iterable)
--> filter object
如果第一个参数是None ,则会过滤掉不是True的值。
例如:
>>> list(filter(None,[0,2,False]))
[2]
>>> filter(None , [1,0,False])
<filter object at 0x000000000301CE10>
返回的是一个过滤器对象
如果第一个参数是自己指定的函数,则可以指定过滤的方法,例如过滤出奇数。
>>> def odd(x):
returnx%2
>>> temp = range(10)
>>> show = filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
当x=1,3,5,7,9时odd函数才会返回True。
用lambda表达式怎么表示上述一段代码呢?
>>> list(filter((lambdax:x%2),range(10)))
[1, 3, 5, 7, 9]
map函数
map(func, *iterables) --> map object
将iterables里的值一个个在func里运行一次,生成一个map对象。(然后可以用list()来转换成List对象)
例子:
>>> list(map((lambdax:x*2),range(3,7)))
[6, 8, 10, 12]