Python之高阶函数map,reduce,filter

高阶函数

把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。

函数式编程就是指这种高度抽象的编程范式

计算两个值的绝对值

  • 方法一
def sum_num(a,b):
	return abs(a)+abs(b)

result = sum_num(1,-1)
  • 方法二
def sum_num(a,b,f):
	return f(a)+f(b)

result = sum_num(-1,2,abs)

高阶函数的意义在于使代码更加简洁,减少代码重复率

内置高阶函数

map()

def func(x):
    return x * 2


list1 = [1, 2, 3, 4]
result = map(func,list1)
print(result)
print(list(result))

结果为:

<map object at 0x1037f27b8>
[2, 4, 6, 8]

map(func,lst),将函数变量func作用到lst变量的每个元素中,并返回一个迭代器(python2返回的是列表),想要得出结果列表,转成列表格式即可

reduce()

import functools

def func(a,b):
    return a + b

list1 = [1, 2, 3, 4]
result = functools.reduce(func,list1)
print(result)

结果为:

10

reduce(func(x,y), lst),其中func必须有两个参数。
在使用reduce()函数时,需要先导包
每次计算的结果继续和序列的下个元素做累积计算
reduce()传入的参数必须接受2个参数

filter()

def func(x):
    return x % 2 == 0

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = filter(func,list1)
print(result)
print(list(result))

结果为:

<filter object at 0x10fce37b8>
[2, 4, 6, 8]

filter(fun,lst) 函数用于过滤序列,过滤掉不符合条件的元素,并返回一个迭代器,如果想要列表,可以使用list()进行转换

猜你喜欢

转载自blog.csdn.net/qq_41158271/article/details/115314354