lambda 函数,又叫匿名函数。不需要给这个函数命名。
先看一个简单的栗子:
(普通的函数)
1 >>> def f(x): 2 return x * 2 3 4 >>> print f(3) 5 6
用lambda表达式可以表示为
1 >>> g = lambda x : x* 2 2 >>> print g(3) 3 6
lambda 中,冒号前面是参数,可以多个,用逗号隔开,冒号后面是返回值。
多个参数的栗子:
1 >>> g = lambda x ,y : x * y 2 >>> g(2, 3) 3 6
>>> g = lambda x ,y = 3 : x * y >>> g(4) 12
map() 函数
map()函数 接受两个参数,一个是函数 ,一个是序列,map将 传入的函数 依次 作用在 序列的每一个元素上面,并返回一个新的list。
1 >>> print map(lambda x : x*2 , range(6)) 2 [0, 2, 4, 6, 8, 10]
filter() 函数 过滤
filter()函数,接受两个参数,一个是函数,一个是序列,返回True和False,根据判断结果,过滤掉不符合条件的元素,返回一个新的list
1 #删除列表中的偶数 2 3 >>> list =[1, 4, 6, 7, 9, 12, 17] 4 >>> def odd(x): 5 return x% 2 == 1 6 7 >>> filter(odd,list) 8 [1, 7, 9, 17]
练习题:
1. 用lambda表达式 将下面的函数转换成匿名函数
1 >>> def fun(x,y= 3): 2 return x * y
1 # lambda x,y = 3: x*y
2.用 filter()和lambda() 快速求出 100 以内的 3的倍数
1 >>> filter(lambda x :x % 3 == 0 ,range(1,100)) 2 [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]