欢迎光临南昌笑劳网络科技有限公司,我们是一家专注中小型企业营销推广服务的公司!

咨询热线:400 76543 55
南昌笑劳网络科技有限公司
最新资讯News
南昌笑劳网络科技有限公司

Python生成器与迭代器教程_节省内存的遍历方式

作者:冰川箭仙 | 点击: | 来源:冰川箭仙
0601
2026
Python生成器和迭代器是节省内存的核心工具,通过按需生成元素处理大数据;迭代器实现__iter__和__next__方法,生成器是含yield的函数,自动生成迭代器;生成器表达式用()更省内存。...
Python生成器和迭代器是节省内存的核心工具,通过按需生成元素处理大数据;迭代器实现__iter__和__next__方法,生成器是含yield的函数,自动生成迭代器;生成器表达式用()更省内存。

Python生成器和迭代器是处理大量数据时节省内存的核心工具。它们不一次性把所有数据加载进内存,而是按需产生或返回元素,特别适合处理大文件、无限序列或计算开销大的场景。

什么是迭代器(Iterator)

迭代器是一个实现了__iter__()__next__()方法的对象。调用iter()得到迭代器,反复调用next()获取下一个值,直到抛出StopIteration异常。

  • 列表、字符串、字典等内置类型都是可迭代对象(Iterable),但不是迭代器本身
  • 必须显式调用iter()才能获得迭代器
  • for循环底层就是自动调用iter()next()

什么是生成器(Generator)

生成器是一种特殊的迭代器,用函数+yield关键字定义。每次执行到yield就暂停并返回一个值,下次从暂停处继续执行。

  • 函数中只要含有yield,调用它就返回生成器对象,不立即执行函数体
  • 生成器自动实现__iter____next__,无需手动编写
  • 比普通函数更省内存,尤其适合逐行读大文件、生成斐波那契数列等场景

生成器表达式:更简洁的写法

类似列表推导式,但用小括号()包裹,返回生成器对象而非列表。

立即学习“Python免费学习笔记(深入)”;

  • (x**2 for x in range(1000000))只占几十字节内存;而[x**2 for x in range(1000000)]会占用上百MB
  • 不能重复遍历,用完即丢,如需多次使用应转为列表(但会失去内存优势)
  • 支持链式调用,比如sum(x for x in data if x > 0),避免中间列表

实际应用小技巧

用生成器处理大文件或流式数据最能体现价值:

  • 逐行读取超大日志文件:def read_log(filename):
      with open(filename) as f:
        for line in f:
          yield line.strip()
  • 过滤+转换一次完成:valid_emails = (line for line in read_log('users.txt') if '@' in line)
  • 配合itertools模块做切片、分组、合并,避免提前耗尽生成器


# 大数据  # ai  # 工具  # python  # 字节  # 可迭代对象 

我要咨询做网站
成功案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 400 76543 55
    sale#ncxiaolao.cn
Hi,Are you ready?
准备好开始了吗?
那就与我们取得联系吧

咨询送礼现在提交,将获得笑劳科技策划专家免费为您制作
价值5880元《全网营销方案+优化视频教程》一份!
下单送礼感恩七周年,新老用户下单即送创业型空间+域名等大礼
24小时免费咨询热线400 76543 55
合作意向表
您需要的服务
您最关注的地方
预算

直接咨询