当前位置: 首页 > article >正文

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

运行结果:

图片


http://www.kler.cn/a/104453.html

相关文章:

  • 某全球领先的晶圆代工企业:替代FTP实现大规模文件的高效传输
  • Learning Open-World Object Proposals without Learning to Classify(论文解析)
  • 汉威科技光纤预警系统,守护油气长输管道“大动脉”
  • Spring Boot集成SpringFox 3.0与Pageable参数处理
  • 博途S7-1200PLC自由口通信(Send_P2P和Receive_P2P指令编程)
  • scrapy的安装和使用
  • 【linux】倒计时小程序
  • 基于C#使用winform技术的游戏平台的实现【C#课程设计】
  • centos搭建elastic集群
  • Vue常用指令
  • 【Chrome】使用k8s、docker部署无头浏览器Headless,Java调用示例
  • 笔记本电脑识别不了刻录机,由于设备驱动程序的前一个实例仍在内存中,windows 无法加载这个硬件的设备驱动程序。 (代码 38)
  • (自适应手机端)厨师招聘信息发布类网站模板
  • vscode代码快捷输入
  • 【软件测试】自动化测试selenium
  • 【反射】Field类
  • 如何配置微信小程序id
  • NewStarCTF2023week4-More Fast(GC回收)
  • Leo赠书活动-02期 【信息科技风险管理:合规管理、技术防控与数字化】
  • JSONP的安全性较差,那么在跨域情况下,有没有其他更安全的替代方案呢?