python的几个内置高阶函数

在开始之前,先大概介绍一下什么是高阶函数,高阶函数就是将函数作为参数,这样的函数就是高阶函数。高阶函数是函数式编程的体现。

map

map(func,lst) ,将传入的函数变量作用到lst的每个元素中,并返回新的结果(python2是返回列表,python3返回迭代器)

下面以计算列表中每个元素的3次方为例来演示(这里用的是python3)

常规写法


def func(x): return pow(x,3) list1 = [1,2,3,4,5,6,7] print(map(func,list1)) <map object at 0x00000260B8B55B50> print(list(map(func,list1))) [1, 8, 27, 64, 125, 216, 343]

 

lambda写法

list1 = [1,2,3,4,5,6,7]
print(map(lambda x:pow(x,3),list1))
print(list(map(lambda x:pow(x,3),list1)))

输出同样的结果,可以自行测试

 

reduce

语法:reduce(func,lst) , 其中func必须有两个参数,每次func将计算的结果持续和lst的下一个元素做累计计算。

示例:计算list1中各个元素的累加和

常规写法

from functools import  reduce

def func(x,y):
     return x+y 

list1 = [1,2,3,4,5,6,7]
print(reduce(func,list1))

输出的结果是28

 

lambda写法

from functools import  reduce

list1 = [1,2,3,4,5,6,7]

print(reduce(lambda x,y:x+y,list1))

 

filter 

filter函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转为列表,只需要用list方法转换即可。

示例:过滤掉list1序列中能被3整除的数

 常规写法

list1 = [x for x in range(50)]

def func(x):
    if x % 3 == 0:
        return x

print(list(filter(func,list1)))


输出[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]

 

lambda写法

list1 = [x for x in range(50)]

print(list(filter(lambda x:x%3==0,list1)))
posted @ 2021-08-25 16:30  羊脂玉净瓶  阅读(96)  评论(0)    收藏  举报