首页 > 代码库 > python中的lambda

python中的lambda

lambda表达式返回一个函数对象例子:func = lambda x,y:x+yfunc相当于下面这个函数def func(x,y):    return x+y 注意def是语句而lambda是表达式下面这种情况下就只能用lambda而不能用def[(lambda x:x*x)(x) for x in range(1,11)] map,reduce,filter中的function都可以用lambda表达式来生成! map(function,sequence)把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。如果function有两个参数,即map(function,sequence1,sequence2)。 例子:求1*1,2*2,3*3,4*4map(lambda x:x*x,range(1,5))返回值是[1,4,9,16] reduce(function,sequence)function接收的参数个数只能为2先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。 例子:求1到10的累加reduce(lambda x,y:x+y,range(1,11))返回值是55。 filter(function,sequence)function的返回值只能是True或False把sequence中的值逐个当参数传给function,如果function(x)的返回值是True,就把x加到filter的返回值里面。一般来说filter的返回值是list,特殊情况如sequence是string或tuple,则返回值按照sequence的类型。 例子:找出1到10之间的奇数filter(lambda x:x%2!=0,range(1,11))返回值[1,3,5,7,9] 如果sequence是一个stringfilter(lambda x:len(x)!=0,‘hello‘)返回‘hello‘filter(lambda x:len(x)==0,‘hello‘)返回‘‘