Python中几个必须知道的函数
Python中有几个有趣的函数,通常在面试或笔试的基础上会被问及,其中三个是maphon、filter、reduce函数。
1.map(function, iterable)
第一个要传输的元素是函数名或lambda匿名函数表达式,第二个元素传输到可迭代对象。
array=[1,2,3,4,5]result=map(lambdax:x+1,array)result#result直接打印的结果是一个对象,需要用list进行转换 具体结果可见一斑<0000000003A79518,mapobjectat000000000000>list(result)[2,3,4,5,6]
在这里,我们可以看到map函数结果中的每个元素都比原列表中对应的元素大1,我缩写的lambda表达式是添加每个元素1。
由此可见,map()函数的作用是操作可迭代对象中的每个元素,然后返回元素操作后形成的可迭代对象。
2.filter(function, iterable)
同样,第一个参数传输到函数名或匿名函数,第二个元素传输到可迭代对象
#首先按照map的函数输入试试array=[1,2,3,4,5]result=filter(lambdax:x+1,array)result<filterobjectat 0x0000000003A79550>list(result) #结果没有变化,说明参数没有返回[1、2、3、4、5] #True将函数进行、False判断返回试验result1=filter(lambdax:xifx%2==0elsenone,array)result1<filterobjectat 0x0000000003C28A90>list(result1) #回到True的值[2,4]
可以从上面的代码中得出,filter()函数是将可迭代对象的元素代入函数,然后返回到True元素,通常可以在不写循环的情况下进行筛选。
3.reduce(function, iterable)
reduce函数只在python2中有,传入参数和mapp、filter是一样的。然而,它的函数传入两个元素。将前两个元素代入函数后,返回操作值,返回值作为第一个元素,并将第三个元素作为第二个元素再次代入函数,直到返回最终结果结束。
array=[1,2,3,4,5] result=reduce(lambdax,y:x+y,array) list(result) #1+2+3+4+5=1515
其操作步骤其实很简单:
第一次x=1,y=2传入匿名函数,x+y是返回值3
第二次x=3(返回的3),y=3(此3是列表中的第二个元素)代入函数,返回x+y为6
第三次x=6,y=4.返回x+y为10
第四次x=10,y=5.返回x+y为15
后面没有元素可以直接传入结束。
温馨提示:python工具中的函数不一定是最快的算法,只是为了方便使用,编写快速简单的代码,如果你追求速度或手动滚动最佳算法。(这就是为什么面试中有这么多算法和数据结构的问题)