Python的高阶函数

简介: 【4月更文挑战第2天】,Python高阶函数允许函数作为参数和返回值,常用于函数抽象和数据转换。`map`应用函数到序列所有元素,返回新迭代器;`filter`保留使函数返回值为真的元素;`reduce`对序列累积计算;`sorted`对可迭代对象排序,可指定排序键。这些工具提升代码简洁性和功能性。

Python中的高阶函数是指这类函数:它们不仅可以接收常规的数据类型作为参数,还可以接收其他函数作为参数,并且可能将函数作为其操作的一部分或者结果返回。高阶函数体现了函数式编程的特点,在Python中它们主要用于处理函数的抽象和数据的转换。
image.png

下面是一些Python中常见的高阶函数及其用途:

  1. map(function, iterable...)

    • map函数接收一个函数和一个或多个可迭代对象作为参数,它会将给定函数应用于各个可迭代对象的所有元素上,并返回一个包含每次函数应用结果的新迭代器。

    示例:

    def square(x):
        return x ** 2
    
    numbers = [1, 2, 3, 4]
    squares = map(square, numbers)
    print(list(squares))  # 输出:[1, 4, 9, 16]
    
  2. filter(function, iterable)

    • filter函数同样接收一个函数和一个可迭代对象,它会将函数应用到可迭代对象的每个元素上,仅保留函数返回值为真的元素,并返回一个包含这些元素的新迭代器。

    示例:

    def is_even(n):
        return n % 2 == 0
    
    numbers = [1, 2, 3, 4, 5, 6]
    even_numbers = filter(is_even, numbers)
    print(list(even_numbers))  # 输出:[2, 4, 6]
    
  3. reduce(function, iterable[, initializer])

    • reduce函数来自于functools模块(Python 3.x中需要显式导入),它对可迭代对象中的元素进行累积计算,将函数应用到序列的第一个和第二个元素,然后将结果与第三个元素一起再应用函数,依此类推,直到序列结束,最后返回一个单一的累积结果。

    示例:

    from functools import reduce
    
    def add(a, b):
        return a + b
    
    numbers = [1, 2, 3, 4, 5]
    sum_of_numbers = reduce(add, numbers)
    print(sum_of_numbers)  # 输出:15
    
  4. sorted(iterable, key=None, reverse=False)

    • sorted函数可以对可迭代对象进行排序,并可以接收一个key参数,该参数是一个函数,用于确定排序时所依据的值。

    示例:

    words = ['apple', 'banana', 'cherry', 'date']
    by_length = sorted(words, key=len)
    print(by_length)  # 输出:['date', 'apple', 'cherry', 'banana']
    
    # 使用lambda表达式作为key参数
    numbers = [4, 2, 9, 1, 5]
    ascending = sorted(numbers, key=lambda x: x)
    descending = sorted(numbers, key=lambda x: x, reverse=True)
    print(ascending)  # 输出:[1, 2, 4, 5, 9]
    print(descending)  # 输出:[9, 5, 4, 2, 1]
    

此外,还有其他一些类似的高阶函数,例如 functools.partial 用于创建部分预设参数的函数,以及列表推导式和生成器表达式也可以视为某种意义上的高阶结构,尽管它们不是严格意义上的函数。高阶函数使得Python代码更加简洁高效,并且鼓励了函数式的编程风格。

目录
相关文章
|
4月前
|
Python
函数式编程与装饰器:解释什么是高阶函数,并给出几个Python内置的高阶函数示例。编写一个Python装饰器,用于记录函数执行的时间。
函数式编程与装饰器:解释什么是高阶函数,并给出几个Python内置的高阶函数示例。编写一个Python装饰器,用于记录函数执行的时间。
43 2
|
3月前
|
Python
高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作
【6月更文挑战第20天】高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作。装饰器如`@timer`接收或返回函数,用于扩展功能,如记录执行时间。`timer`装饰器通过包裹函数并计算执行间隙展示时间消耗,如`my_function(2)`执行耗时2秒。
28 3
WK
|
18天前
|
测试技术 Python
python中的高阶函数作用
Python中的高阶函数(HOFs)在编程中扮演着重要角色,通过将通用操作封装为可复用的函数,提升了代码的抽象能力和可维护性。它们是实现函数式编程的关键,支持映射、归约、过滤等模式,并简化了回调函数的使用。此外,高阶函数还用于实现装饰器,进一步增强了代码的功能,减少了冗余,提高了代码的可读性和可维护性。
WK
9 0
WK
|
18天前
|
Python
python中的高阶函数有哪些用途
在Python中,高阶函数(HOFs)接受或返回函数,增强了代码的灵活性与复用性。常见的高阶函数包括`map()`、`filter()`、`reduce()`及`sorted()`等,它们分别用于对序列应用函数、过滤元素、累积计算及排序。`reduce()`位于`functools`模块中,而`sorted()`则常与键函数配合使用。此外,`lambda`函数和装饰器也常与高阶函数结合使用,前者提供快速定义匿名函数的方式,后者则在不改变原函数的基础上添加新功能。高阶函数的应用远不限于这些特定函数,任何符合定义的函数都可视为高阶函数。
WK
13 0
|
1月前
|
分布式计算 Python
【python笔记】高阶函数map、filter、reduce
【python笔记】高阶函数map、filter、reduce
|
3月前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
3月前
|
Python
在Python中,`map()`, `filter()` 和 `reduce()` 是函数式编程中的三个核心高阶函数。
【6月更文挑战第24天】Python的`map()`应用函数到序列元素,返回新序列;`filter()`筛选满足条件的元素,生成新序列;`reduce()`累计操作序列元素,返回单一结果。
30 3
|
3月前
|
Python
在Python中,高阶函数是指那些可以接受一个或多个函数作为参数,并返回一个新的函数的函数。
【6月更文挑战第24天】Python的高阶函数简化代码,增强可读性。示例:`map()`检查用户名合法性,如`["Alice", "Bob123", "Charlie!", "David7890"]`;`reduce()`与`lambda`结合计算阶乘,如1到10的阶乘为3628800;`filter()`找出1到100中能被3整除的数,如[3, 6, 9, ..., 99]。
29 3
|
3月前
|
数据安全/隐私保护 Python
Python装饰器是高阶函数,用于在不修改代码的情况下扩展或修改函数行为。它们提供可重用性、模块化和无侵入性的功能增强。
【6月更文挑战第20天】Python装饰器是高阶函数,用于在不修改代码的情况下扩展或修改函数行为。它们提供可重用性、模块化和无侵入性的功能增强。例如,`@simple_decorator` 包装`my_function`,在调用前后添加额外操作。装饰器还能接受参数,如`@logged("INFO", "msg")`,允许动态定制功能。
28 6