高阶函数

高阶函数:就是将函数当成参数传递的一种函数;

上代码:

def add(x,y,fun):
    return fun(x)+fun(y)
print(add(-6,3,abs))   #abs为函数调用而abs就是函数本身
#结果为9

Python有一些内建的高阶函数

map()

map()函数接收两个参数,一个是函数,一个是序列。通过函数来处理序列。map传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

如果我们用python编写简单的map()函数代码如下:

def map(func,seq):
    mapped_seq = []
    for eachItem in seq:
        mapped_seq.append(func(eachItem))
    return mapped_seq

我们用一个简短的lambda函数来展示如何用map()处理实际数据:

>>>map((lambda x:x+2),[0,1,2,3,4,5])
[2,3,4,5,6,7]
#映射函数是对每个数加2,并且将这个函数和一个数字的列表传给map(),返回的结果列表是和原始集合相同的数字集合,但是每个数字都加了2

为了更加的巩固熟悉再看一个例子:

>>>map(str,[1,2,3,4,5,6,7,8])
['1','2','3','4','5','6','7','8']
#将列表中的数字转化成字符

reduce()

reduce把一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累积计算。

reduce(func,[1,2,3]) = func(func(1,2),3)

老规矩试着用纯python实现reduce()

def reduce (func,seq,init=None):
    Iseq = list(seq)
    if init is None:
        res = lseq.pop(0)
    else:
        res = init
    for item in lseq:
        res = bin_func(res,item)
    return res

那reduce的用法是怎么样的呢?

reduce((lambda x,y:x+y),range(5))
10
#用头两个元素(0,1)调用函数相加得到1,然后再用这个结果和下一个元素2来调用函数进行相加,以此类推最终得到的结果是10

再来看一个例子:将[1.2.3.4.5]变为12345

def total(x,y):
    return x*10+y
reduce(total,[1,2,3,4,5])
#结果是:12345

结束啦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值