python (个人学习笔记1.7)--四个python重要的内置方法,函数(filter,map,reduce,lambda)

一、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

提醒

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值