当前位置: 首页 > 工具软件 > Python Lion > 使用案例 >

Python学习笔记#7 常用高阶函数

裴彦
2023-12-01

1.lambda 函数
Lambda函数,是一个匿名函数,创建语法:
lambda parameters:express
parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。
expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数。如果为元组,则应用圆括号将其包含起来。

调用lambda函数,返回的结果是对表达式计算产生的结果。

2.filter 函数 :
(1) filter( func, seq ) :
接受两个参数, 第一个参数为过滤条件, 可以是匿名函数或是自定义函数, 第二个参数为
数据容器(可迭代对象), 用来装载要进行过滤的所有数据。
(2) 返回一个列表, 其中包含对其执行函数时结果为真的所有元素
例:

def use_filter(l):
    """
    获取制定 列表/元组 中的奇数
    :param l: list/tuple 要过滤的数据
    :return: 过滤好的奇数列表
    """
    rest = filter(lambda n: n % 2 != 0, l)
    return rest

if __name__ == '__main__':
    l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    rest = use_filter(l)
    print(list(rest))

输出:[1, 3, 5, 7, 9, 11]

3.map 函数
(1) map(function, sequence,…)
map()函数接收两个参数,一个是函数,一个是序列;
map()的功能是将传入的函数依次作用到序列的每个元素,并把结果返回。
(2) 返回一个列表, 其中包含对指定序列包含的项执行指定函数返回的值
例:

def f(n):
    return n * n * n
def pow_num_use_map(l):
    """
    根据 map函数计算给定列表的每一项的立方
    :param l: list/tuple int类型的列表或是元组
    :return: 原来列表中每一项的立方
    """
    return map(f, l)

if __name__ == '__main__':
    l = [1, 2, 3, 4, 5, 6, 7, 9]
    rest = pow_num_use_map(l)
    print(list(rest))

输出:

[1, 8, 27, 64, 125, 216, 343, 729]

PS: 当map()函数中传入的列表多于一个时,map()函数可以并行执行。
例: map( lambda x,y : xy, [3,5], [3,5] --> 即是[33,5*5] ---->[9, 25]

4.reduce 函数
(1) reduce(func, seq[, initial]) --> 等价于 func(func(func(seq[0],seq[1]),seq[2]),…)
reduce()函数接收两个参数,一个是函数名称,一个是序列;
功能是按照给定的方法把参数中的序列缩减为单个的值,并把结果返回。
(2) 使用指定的函数将序列的前两个函数合二为一, 再将结果与第三个函数合二为一, 依次类推。
直到处理完整个序列并得到一个结果。
例:

from functools import reduce

def f(m, n):
    """求两个数的和"""
    return m + n

def get_sum_use_reduce(l):
    """
    使用 reduce函数进行求和
    :param l: list/type 里面是整数
    :return: 列表所有项的和
    """
    return reduce(f, l)

if __name__ == '__main__':
    l = [1, 2, 4, 6, 7, 8, 9]
    rest_reduce = get_sum_use_reduce(l)
    print(rest_reduce)

输出: 37

 类似资料: