欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python的内置高阶函数

程序员文章站 2024-03-26 09:53:17
...

一、高阶函数

1.实参是一个函数名
2.函数的返回值是一个函数

实例:

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

a = fun(1,2)
print(a)

print(abs(-11))

运行结果

3
11

1.函数本身也可以赋值给变量,变量也可以指向函数

f = abs
print(f(-10))

运行结果

10

2.传递的参数包括函数名

def fun(x,y,f):
    return f(x),f(y)

print(fun(-10,23,abs))

运行结果

(10, 23)

二、map函数

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

实例:

#对于序列[-1,3,-5,-4]的每个元素求绝对值
print(list(map(abs,[-1,3,-5,-4])))

运行结果:
[1, 3, 5, 4]

三、reduce函数

reduce:把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
reduce(f,[x1,x2,x3,x4,x5] = f(f(f(x1,x2),x3),x4)

实例:

from functools import reduce

def multi(x,y):
    return x * y

print(reduce(multi,range(1,5)))

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

print(reduce(add,[1,2,3,4,5]))

运行结果;
24
15

四、filter函数

filter过滤函数
和map()类似,也接收一个函数和一个序列
但fileter()把传入的函数依次作用于每个元素,然后根据返回值
是True汉时False来决定保留还是丢弃该元素

实例:

#0~9的偶数
def isodd(num):
    if num % 2 == 0:
        return True
    else:
        return False

print(list(filter(isodd,range(10))))

运行结果:
[0, 2, 4, 6, 8]

五、sorted函数

sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。对比原始的list和经过key=abs处理过的list:然后sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素:

实例:

#列表的排序方法
li = [2,1,3,4]
li.sort(reverse=True)
print(li)
#排序函数
a = sorted(li,reverse=True)
print(a)

运行结果:
[4, 3, 2, 1]
[4, 3, 2, 1]