Python 十个高阶函数

开发 前端
高阶函数,顾名思义,是那些可以接收函数作为参数,或是返回函数作为结果的函数。它们让你的代码更加灵活、简洁,同时也提升了代码的复用性。

高阶函数,顾名思义,是那些可以接收函数作为参数,或是返回函数作为结果的函数。它们让你的代码更加灵活、简洁,同时也提升了代码的复用性。

接下来,我们将通过一系列的实例来深入理解高阶函数的魅力。让我们开始吧!

实例一:map 函数的应用

map 函数接收一个函数和一个序列,将函数应用于序列中的每一项,返回一个迭代器。例如,如果我们想要将一个列表中的所有数字平方,我们可以这样做:

numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x**2, numbers)
print(list(squared))  # 输出:[1, 4, 9, 16, 25]

实例二:filter 函数的魔法

filter 函数同样接收一个函数和一个序列,但它会过滤出序列中满足条件的元素。比如,筛选出列表中大于10的数:

numbers = [5, 11, 15, 2, 8]
filtered = filter(lambda x: x > 10, numbers)
print(list(filtered))  # 输出:[11, 15]

实例三:reduce 函数的力量

reduce 函数需要从functools模块中导入,它将一个数据集中的所有数据进行累积操作。假设我们要计算一个列表中所有数的乘积:

from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 输出:120

实例四:函数作为参数

我们可以通过定义一个函数,使其能够接受其他函数作为参数,从而实现更高级的抽象和代码复用。比如,编写一个函数apply_function,它可以接收一个函数和一个参数,然后应用这个函数:

def apply_function(func, arg):
    return func(arg)
def square(x):
    return x * x
print(apply_function(square, 5))  # 输出:25

实例五:装饰器的优雅

装饰器是Python中一个非常强大的高阶函数概念,它们可以修改或增强现有函数的行为。比如,我们创建一个简单的装饰器,用于记录函数调用:

def log_decorator(func):
    def wrapper(*args, **kwargs):
        print(f"Calling {func.__name__}")
        return func(*args, **kwargs)
    return wrapper
@log_decorator
def greet(name):
    return f"Hello, {name}"
print(greet("Alice"))  # 输出:Calling greet
                        #       Hello, Alice

实例六:sorted 函数与自定义排序

sorted 函数允许你传递一个key参数来指定如何比较元素。这使得排序变得非常灵活。例如,如果我们有一个包含字典的列表,我们可以按照某个键的值来排序:

people = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 22},
    {'name': 'Charlie', 'age': 30}
]
sorted_people = sorted(people, key=lambda person: person['age'])
for person in sorted_people:
    print(person)

这将按年龄从小到大排序。

实例七:使用itertools模块

Python的itertools模块提供了很多高阶函数,可以处理迭代器的创建和操作。例如,chain函数可以将多个迭代器链接在一起:

import itertools
list1 = [1, 2, 3]
list2 = [4, 5, 6]
chained = itertools.chain(list1, list2)
print(list(chained))  # 输出:[1, 2, 3, 4, 5, 6]

实例八:functools.partial函数

functools.partial允许你冻结函数的部分参数,创建一个新的函数。这对于需要固定某些参数值的情况非常有用:

from functools import partial
def power(base, exponent):
    return base ** exponent
square = partial(power, expnotallow=2)
cube = partial(power, expnotallow=3)
print(square(5))  # 输出:25
print(cube(5))    # 输出:125

实例九:zip函数的多用途

zip函数可以将多个序列打包成一个元组的列表。当你需要同时遍历多个序列时,这非常有用。例如,合并两个列表的元素:

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 22, 30]
combined = zip(names, ages)
for name, age in combined:
    print(f"{name} is {age} years old")

实例十:any和all函数的逻辑判断

any和all函数分别用来检查序列中是否至少有一个元素满足条件,以及所有元素是否都满足条件。例如,检查一个列表中是否有偶数:

numbers = [1, 3, 5, 7, 8]
has_even = any(number % 2 == 0 for number in numbers)
print(has_even)  # 输出:True
all_odd = all(number % 2 != 0 for number in numbers)
print(all_odd)   # 输出:False

这些高阶函数的例子展示了Python语言的强大和灵活性。它们不仅让代码更加紧凑,还提高了代码的可读性和可维护性。希望这些示例能够帮助你更好地理解和运用高阶函数!

责任编辑:华轩 来源: 测试开发学习交流
相关推荐

2024-06-26 13:11:40

2023-12-22 15:44:43

2024-05-15 08:59:52

Python编程

2024-01-24 13:14:00

Python内置函数工具

2021-09-15 09:20:37

Python函数代码

2022-08-27 15:03:43

Python损失函数算法

2024-01-30 00:40:10

2024-12-03 14:33:42

Python递归编程

2022-08-19 16:09:08

Python损失函数算法

2024-01-23 18:49:38

SQL聚合函数数据分析

2024-04-28 10:00:24

Python数据可视化库图像处理库

2021-12-02 14:55:44

Python项目编程语言

2024-08-26 14:57:36

2023-06-27 15:50:23

Python图像处理

2024-05-30 12:27:42

Python代码

2024-10-30 10:00:00

Python函数

2022-05-12 08:12:51

PythonPip技巧

2024-07-03 10:14:08

2024-10-17 16:45:46

Python内置函数

2021-12-13 23:02:41

Python语言开发
点赞
收藏

51CTO技术栈公众号