零基础入门学习Python(12):lambda表达式、filter()和map()
匿名函数,使用lambda表达式构建一个函数对象
>>> def test1(x): #普通函数
return 2 * x + 1
>>> test1(5)
11
>>> lambda x : 2 * x + 1 #lambda表达式
<function <lambda> at 0x010538A0>
>>> f = lambda x : 2 * x + 1 #可以把lambda表达式赋给一个名字直接调用
>>> f(5)
11
>>> lambda x,y: x + y #lambda表达式可以有多个参数
<function <lambda> at 0x01053930>
>>> f = lambda x,y: x + y
>>> f(3,4)
7
下面介绍Python中两个常用的内置函数:filter()和map()
1、filter():过滤器,去掉非True的元素,带两个参数,第一个参数可以是None或者一个函数,第二个参数是一个可迭代对象,返回值是一个对象,可以利用list显示出来
>>> filter(None,[-1,0,2,False,True]) #返回一个filter对象
<filter object at 0x025E3B50>
>>> list(filter(None,[-1,0,2,False,True])) #第一个参数为None时,返回第二个参数中为真的元素
[-1, 2, True]
>>> f = lambda x: x%2
>>> list(filter(f,range(12))) #这个过滤器的作用是返回不能被2整除的数
[1, 3, 5, 7, 9, 11]
2、map():映射,两个参数,第一个参数是一个函数,第二个参数是可大于一个的可迭代对象,返回可迭代对象元素在函数中计算得到的值,返回一个map对象
>>> list(map((lambda x: x+2),range(3)))
[2, 3, 4]
>>> list(map((lambda x,y: x+y),range(3),range(5))) #lambda函数需要两个参数,所以map()有两个可迭代对象,当计算完最短的可迭代对象中的元素时停止
[0, 2, 4]