Python自带了几个有趣的函数,在面试或者基础笔试的时候经常会被问到,其中三个就是map、filter和reduce函数。
1.map(function, iterable)
它第一个要传的元素是函数名或lambda匿名函数表达式,第二个元素传入可迭代对象。
array = [1,2,3,4,5]result = map(lambda x:x+1,array)result#这里result直接打印的结果是一个对象,需要用list转化一下才
可以看到具体结果<map object at 0x0000000003A79518>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(lambda x:x+1,array)result<filter object at
0x0000000003A79550>list(result)
#结果没有变化,说明对参数没有进行操作返回[1, 2, 3, 4, 5]
#将函数进行True、False判断返回试一下result1 = filter(lambda x:x if x%2==0 else None,array)result1<filter object at
0x0000000003C28A90>list(result1)
#返回了为True的值[2, 4]
从上面的代码可以看出,filter()函数就是将可迭代对象的元素代入函数,然后返回为True的元素,可以用于一般的过滤,不需要写循环。
3.reduce(function, iterable)
reduce函数只有python2才有,传入的参数和map、filter一样。但是它的函数传入两个元素,将前两个元素代入函数后,返回运算后的值,并将返回值作为第一个元素,同时将第三个元素代入为第二个元素again 函数执行操作,直到最后返回最终结果。
array = [1,2,3,4,5]
result = reduce(lambda x,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工具中自带的函数不一定是最快的算法,而是为了方便使用,写代码快速简洁。如果你追求速度,你仍然需要手动创建最佳算法。 (难怪面试的算法题和数据结构题那么多)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Super在python中获取类变量12/01
- ♥ Python如何检查ul下有多少li?11/03
- ♥ python如何从键盘输入数据?08/16
- ♥ python自定义日志的实现方法12/06
- ♥ python函数和c有什么区别09/08
- ♥ 如何在python中编写不等号10/10
内容反馈