欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

四个python重要的内置方法,函数(filter,map,reduce,lambda)

程序员文章站 2022-03-03 19:13:43
文章目录一、map 方法(函数)二、filter 方法(函数)三、reduce 方法(函数)四、lambda 方法(函数)****提醒****一、map 方法(函数)map():用于对某个自定义函数进行多次遍历的方法,或可以说是将某一实参序列按顺序逐项传递给某自定义函数(可改变运算结果),最后将函数运算结果制作成一个map object迭代器,并将迭代器返回。例如:str = ['a','b','c','d']def fun1(s): return s + "alvin"ret =...



一、map 方法(函数)

map():用于对某个自定义函数进行多次遍历的方法,或可以说是将某一实参序列按顺序逐项传递给某自定义函数(可改变运算结果),最后将函数运算结果制作成一个map object迭代器,并将迭代器返回。

例如:

str = ['a','b','c','d'] def fun1(s): return s + "alvin" ret = map(fun1, str) #将序列str逐项传入fun1函数 print(ret) # map object的迭代器 print(list(ret)) # ret是一个迭代器对象 

输出:

<map object at 0x000001E899564250> #返回的该map类型迭代器的地址  ['aalvin', 'balvin', 'calvin', 'dalvin'] 

二、filter 方法(函数)

filter():用于对某个自定义函数进行多次遍历的方法,或可以说是将某一实参序列按顺序逐项传递给某自定义函数(不可改变运算结果),最后将函数运算结果制作成一个filter object迭代器,并将迭代器返回。

例如:

str = ['a', 'b', 'c', 'd'] def fun1(s): #过滤器方法 if s != 'a': return s
ret = filter(fun1, str) print(ret) print(list(ret)) 

输出:

<filter object at 0x0000024F61C94250> #返回的该filter类型迭代器的地址 ['b', 'c', 'd'] 

不可改变运算结果,例如:
同上述map()函数代码:

str = ['a', 'b', 'c', 'd'] def fun1(s): return s + "alvin" ret = filter(fun1, str) print(ret) # map object的迭代器 print(list(ret)) #与map()对比: #str = ['a', 'b', 'c', 'd'] #def fun1(s): #    return s + "alvin" #ret = map(fun1, str)	#将序列str逐项传入fun1函数 #print(ret)  # map object的迭代器 #print(list(ret))  # ret是一个迭代器对象 

输出:

<filter object at 0x0000024C36A64250> ['a', 'b', 'c', 'd'] #与map()对比: #<map object at 0x000001E899564250> #['aalvin', 'balvin', 'calvin', 'dalvin'] 

三、reduce 方法(函数)

reduce():用于对某个自定义函数进行多次遍历的方法,或可以说是将某一实参序列按顺序逐项传递给某自定义函数,并返回一个值。不同点见下方代码。

例如:

from functools import reduce def add1(x, y): return x+y print(reduce(add1, range(1, 10))) #1加到10 print(reduce(add1, [1,2,3,4,5,6,7,8,9])) #解释range()在reduce方法中的调用形式 #此时reduce只有两个参数,每次将调用第二个参数(序列)的前两个元素传入add1中进行运算,将运算结果返回,运算结果将与下一元素一同传入add1再进行运算,以此类推直到第二参数(序列)末尾。 print(reduce(add1, range(1, 10),10)) 

输出:

45 55 

四、lambda 方法(函数)

lambda():又称匿名函数,本身作用一般,需要与上述三种方法配合使用。

例如:

add = lambda a,b : a+b # lambda a,b : a+b # a,b为参数,冒号后为代码块 print add(2,3) 

利用lambda()方法与reduce()方法结合计算阶乘:

from functools import reduce print (reduce(lambda x,y: x*y, range(1,6))) #计算5的阶乘 

输出:

120 

提醒

合理结合使用四种函数,可在必要之时,减少大量代码的编写

本文地址:https://blog.csdn.net/qq_41725460/article/details/109057738