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

python itertools模块介绍

itertools 是 Python 内建的一个高效处理迭代器的模块,提供了创建复杂迭代器的函数工具。它包含一系列用于迭代、组合、排列、过滤等功能的迭代器构建工具,常用于数据处理和算法设计。下面是 itertools 模块中一些常见的函数介绍:

1. 无限迭代器

  • itertools.count(start=0, step=1)

    • 生成从 start 开始,每次增加 step 的无限序列。常用于构建自增序列。
import itertools
for i in itertools.count(10, 2):print(i)if i > 20:break

itertools.cycle(iterable)

  • 无限循环遍历可迭代对象。
import itertools
cycle_iter = itertools.cycle('ABC')
for _ in range(6):print(next(cycle_iter))

itertools.repeat(object, times=None)

  • 无限次或指定次数重复给定对象。
import itertools
repeat_iter = itertools.repeat('hello', 3)
print(list(repeat_iter))

2. 组合生成器

  • itertools.product(*iterables, repeat=1)

    • 生成输入迭代器的笛卡尔积,可用 repeat 参数控制重复次数。
import itertools
print(list(itertools.product('AB', [1, 2])))

itertools.permutations(iterable, r=None)

  • 生成长度为 r 的排列,r 默认为 iterable 的长度。
import itertools
print(list(itertools.permutations('ABC', 2)))

itertools.combinations(iterable, r)

  • 生成长度为 r 的组合,不考虑顺序。
import itertools
print(list(itertools.combinations('ABC', 2)))

itertools.combinations_with_replacement(iterable, r)

  • 生成包含重复元素的组合。
import itertools
print(list(itertools.combinations_with_replacement('AB', 2)))

3. 过滤迭代器

  • itertools.filterfalse(predicate, iterable)

    • 返回迭代器中 predicate 为 False 的元素。
import itertools
print(list(itertools.filterfalse(lambda x: x % 2 == 0, range(10))))

itertools.dropwhile(predicate, iterable)

  • 直到 predicate 为 False,开始返回剩余元素。
import itertools
print(list(itertools.dropwhile(lambda x: x < 5, range(10))))

itertools.takewhile(predicate, iterable)

  • 只返回 predicate 为 True 的元素,遇到 False 停止。
import itertools
print(list(itertools.takewhile(lambda x: x < 5, range(10))))

4. 组合工具

  • itertools.chain(*iterables)

    • 将多个可迭代对象串联在一起。
import itertools
print(list(itertools.chain('ABC', [1, 2, 3])))

itertools.islice(iterable, start, stop[, step])

  • 对迭代器切片,类似列表的切片功能。
import itertools
print(list(itertools.islice(range(10), 2, 8, 2)))

5. 累积函数

  • itertools.accumulate(iterable, func=operator.add)
    • 对 iterable 的元素进行累积计算,默认是累加,可以传入其他二元函数。
import itertools
import operator
print(list(itertools.accumulate([1, 2, 3, 4], operator.mul)))

itertools 提供了高效、内存友好的迭代工具,尤其适用于处理大规模数据和流式数据操作

http://www.lryc.cn/news/451416.html

相关文章:

  • 【分布式微服务云原生】5分钟深入剖析Kafka:Leader与Follower分区的秘密及负载均衡的艺术
  • 在线代码编辑器
  • 深入了解 MPlayer:Linux 系统中的多功能多媒体播放器
  • Netty系列-7 Netty编解码器
  • OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用)
  • 大表性能优化的关键技术
  • 广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞
  • 如何成为成功的AI产品经理:经验与策略分享
  • spring loCDI 详解
  • 遇到 Docker 镜像拉取失败的问题时该如何解决
  • 【C/C++】错题记录(三)
  • 深入理解Web浏览器与服务器的连接过程
  • 深入解析 https
  • NP-hard问题
  • 【Nacos架构 原理】内核设计之Nacos通信通道
  • 【单片机】单片机map表详细解析
  • 考研笔记之操作系统(三)- 存储管理
  • vim/vi常用命令大全
  • 什么是大语言模型,一句话解释
  • 【数据库】 MongoDB 撤销用户的角色和权限
  • vue2接入高德地图实现折线绘制、起始点标记和轨迹打点的完整功能(提供Gitee源码)
  • 【重学 MySQL】四十六、创建表的方式
  • WPS在表格中填写材料时,内容过多导致表格不换页,其余内容无法正常显示 以及 内容过多,导致表格换页——解决方法
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01
  • 第一弹:C++ 的基本知识概述
  • 在职场,没人告诉你的人情世故
  • 激光切割机适用材质有哪些
  • C#自定义工具类-数组工具类
  • 18年408数据结构
  • Android 通过自定义注解实现Activity间跳转时登录路由的自动拦截