函数式编程


匿名函数

形式为lambda 形参:表达式(相当于是return)

lambda x:x+1

等价于

def f(x):
    return x+1

当返回多个值时,表达式要用括号括起来

lambda x,y,z:(x+1,y+1,z+1)

匿名函数通常和其他函数一起使用,当单独调用时要用变量指向匿名函数然后调用(fun指向函数内存地址)

fun=lambda x:x+1
print(fun,fun(5))
输出
<function <lambda> at 0x000001EF5CFF1E18>  6

高阶函数

满足其中之一就是高阶函数

1.函数接受的参数是另一个函数   2.返回值中包含函数

# 把函数当作参数传给另外一个函数
def foo(n): 
    print(n)
def bar(name):
    print('my name is %s' %name)
foo(bar('alex'))
输出
my name is alex
None
#返回值中包含函数
def bar():
    print('from bar')
def foo():
    print('from foo')
    return bar
n=foo()
n()
def hanle():
    print('from handle')
    return hanle
h=hanle()
h()
输出
from foo
from bar
from handle
from handle

map函数

形式map(function,iteratable)function为函数,iteratable为可迭代对象如列表,元组,字符串等

map会历遍可迭代对象里的每一个元素,并把函数作用于每一个元素上,返回的是一个迭代器,可用list()变成列表形式

res=map(lambda x:x+1,[1,2,3,4,5])
print(res,list(res))
输出
<map object at 0x00000241961079E8> [2, 3, 4, 5, 6]

filter函数

形式filter(function,iteratable)

filter历遍可迭代对象里的每一个元素,并把函数作用于每一个元素上,将符合条件的元素留下,返回一个迭代器,可用list()变成列表形式

res=filter(lambda x:x%2==0,[1,2,3,4,5,6,7,8])
print(res,list(res))
输出
<filter object at 0x00000144725879E8> [2, 4, 6, 8]

reduce函数

形式reduce(function,iterratable,init=None)

reduce将function作用于可迭代对象的元素上并将得到的值作为functiob的参数继续与后面的元素做运算,init可用指定开始的第一个作用元素,默认为None,最后只输出一个值。Python3中reduce函数要由functools模块导入

from functools import reduce
res=reduce(lambda x,y:x+y,[1,2,3,4,5,6])
print(res)
输出
21
相当于1+2+3+4+5+6
from functools import reduce
res=reduce(lambda x,y:x+y,[1,2,3,4,5,6],7)
print(res)
输出
28
相当于7+1+2+3+4+5+6


       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值