Python迭代器与生成器用法_节省内存技巧说明【教程】

admin 百科 14
Python迭代器和生成器的核心价值在于按需产生数据,避免一次性加载全部内容到内存;迭代器通过__iter__()和__next__()实现单向遍历,生成器以yield简化创建,适用于大文件、数据库游标及无限序列等场景。

Python迭代器与生成器用法_节省内存技巧说明【教程】-第1张图片-佛山资讯网

Python迭代器和生成器的核心价值,在于按需产生数据,避免一次性加载全部内容到内存。尤其处理大文件、海量数据或无限序列时,能显著降低内存占用。

什么是迭代器(Iterator)

迭代器是实现了__iter__()__next__()方法的对象,每次调用next()返回一个元素,直到抛出StopIteration异常。内置容器如listtuplestr等都可被iter()转为迭代器。

  • 手动创建迭代器:继承object,实现两个魔法方法;适合封装自定义遍历逻辑(如树的中序遍历)
  • iter(obj)获取迭代器后,只能单向遍历一次;再次遍历需重新创建
  • for循环底层就是调用iter()next(),所以支持迭代器的对象天然支持for

生成器(Generator):更简洁的迭代器写法

生成器函数使用yield关键字,调用时返回一个生成器对象(即迭代器),不执行函数体;每次next()才运行到下一个yield并暂停,保存上下文。

  • 比手动写迭代器类代码更少、更直观;适合简单数据流逻辑(如逐行读大文件、计算斐波那契)
  • 生成器表达式(x*2 for x in range(1000000))比列表推导式[x*2 for x in range(1000000)]省内存——前者返回迭代器,后者直接生成百万个整数存入内存
  • 生成器不可重用:一旦遍历完就耗尽,需重新调用函数获得新生成器

实际节省内存的典型场景

不是所有情况都需要生成器,但以下场景效果明显:

标签: python 内存占用

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~