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

【Python 工具人快餐 · 第 2 份】

开袋即食

itertools 是「循环加速器」:
无限迭代器、排列组合、滑动窗口、分批读取……
全部惰性生成,内存永远只占一条缝。


1 行代码 4 连发

from itertools import count, islice, product, pairwisec = islice(count(10, 2), 5)      # [10,12,14,16,18]  无限迭代切 5 片
p = list(product('AB', repeat=2)) # [('A','A'), ('A','B'), ...]
w = list(pairwise(range(4)))      # [(0,1),(1,2),(2,3)]

场景实拍:大文件按 1 MB 块读取

需求:逐块处理 10 GB 日志,却不撑爆内存。

from pathlib import Path
from itertools import islicedef chunked(file, size=1_024_000):while chunk := file.read(size):yield chunkwith Path('giant.log').open('rb') as f:for piece in chunked(f):process(piece)          # 内存永远只有 1 MB

核心工具:iter(callable, sentinel) 的魔法,这里换成 while 更直观。


升级加料

  1. 组合:combinations('ABC', 2) → AB AC BC
  2. 累积:accumulate([1,2,3,4]) → 1 3 6 10
  3. 分组:groupby(sorted(data, key=key), key=key)

打包带走 : 循环太长?先看 itertools! 惰性迭代器,内存永动机。

http://www.xdnf.cn/news/1268569.html

相关文章:

  • TensorFlow深度学习实战(29)——强化学习(Reinforcement learning,RL)
  • Android 开发问题:The specified child already has a parent.
  • Visual Studio Code (v1.103) 中 GitHub Copilot 最新更新!
  • LLM表征的提取方式
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • 电机控制器母线电压采样芯片有哪些
  • 机器学习——模型的简单优化
  • 如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
  • 机器翻译:需要了解的数学基础详解
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • Java Stream流详解:用法与常用API实战
  • Tob大客户销售面试经验
  • 数据安全与隐私保护:企业级防护策略与技术实现
  • DBSCAN聚类算法实战全解析
  • 时序分解 | MATLAB实现SAO-VMD雪消融算法优化变分模态分解
  • Python 属性描述符(描述符用法建议)
  • 词向量可视化:用TensorBoard或PCA探索词向量空间
  • RecyclerView 中 ViewHolder
  • Datawhale+AI夏令营_让AI读懂财报PDF task2深入赛题笔记
  • 学习Java的Day28
  • 常用信号深度解析(SIGINT、SIGPIPE、SIGALRM、SIGTERM等)
  • Android 锁屏图标的大小修改
  • 线上排查问题的一般流程是怎么样的?
  • [激光原理与应用-207]:光学器件 - 光纤种子源激光器常用元器件
  • python---类型别名
  • 新手小白使用jQuery在实际开发中常用到的经验
  • ABP VNext + Akka.NET:高并发处理与分布式计算
  • 从 AI 到实时视频通道:基于模块化架构的低延迟直播全链路实践
  • Vuex与Pinia对比,以及技术选型
  • 《C++进阶之继承多态》【普通类/模板类的继承 + 父类子类的转换 + 继承的作用域 + 子类的默认成员函数】