Python:accumulate累积函数实战

简介:accumulate 是内置模块itertools中的一个函数,主要用于生成一个迭代器,该迭代器按照指定的操作对输入的可迭代对象进行累积计算。它返回一个逐步累积的结果序列。

参数说明:iterable, func=None

1、iterable: 可迭代对象,表示要进行累积操作的数据序列。

2、func: 二元操作函数,表示对两个元素进行操作的规则。该函数接受两个参数并返回一个结果。如果未提供该参数,默认使用加法运算进行累积计算。

历史攻略:

Python:heapq模块使用

测试用例:多条件下编写,懒人妙用itertools

Python:filter、map、reduce、zip函数

Python:常见排列组合问题处理

Python高阶:counter、orderedDict、defaultdict、deque、queue简单示例

案例: 与reduce的区别;reduces是将所有的结果全部计算完成,给出最终结果;而accumulate是返回一个逐步累积的结果序列

# -*- coding: utf-8 -*-
# time: 2023/10/22 23:34
# file: accumulate_demo.py
# 公众号: 玩转测试开发
from functools import reduce
from itertools import accumulate

arr1 = [i for i in range(1, 5)]
print(arr1)  # [1, 2, 3, 4]

# 默认累加
res1 = list(accumulate(arr1))  # [1, 3, 6, 10]
print(res1)


def multi(a, b):
    # 乘法函数
    return a * b


# 传入二元函数,则支持自定义累积方式。如累积乘法
res2 = list(accumulate(arr1, multi))
res3 = list(accumulate(arr1, lambda a, b: a * b))  # 等价于 multi(a, b)
print(res2)
print(res3)

# 更多例子
print(list(accumulate(arr1, lambda a, b: a / b)))  # 累积除法
print(list(accumulate(arr1, lambda a, b: a ** b)))  # 累积幂

new_list30 = reduce(multi, [1, 2, 3])
new_list31 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
new_list32 = reduce(lambda x, y: x + y, ["a1", "b2", "c3"])
print(new_list30)  # 6
print(new_list31)  # 15
print(new_list32)  # a1b2c3

运行结果:

Python:accumulate累积函数实战_第1张图片

你可能感兴趣的:(python,开发语言)