Python入门:Python3 迭代器与生成器全面学习教程

该文章已生成可运行项目,

在这里插入图片描述

在这里插入图片描述

Python入门:Python3 迭代器与生成器全面学习教程

Python入门:Python3 迭代器与生成器全面学习教程,本文详细讲解了 Python3 中迭代器与生成器的相关知识。迭代器是能记住遍历位置的对象,可通过 iter () 和 next () 方法操作,也能用 for 循环遍历,还可自定义,需实现iter__() 与__next__() 方法并处理 StopIteration 异常。生成器是含 yield 的特殊函数,返回迭代器,能逐步产生值,更简洁高效,适合处理大量数据。文中还对比了二者特性及适用场景,助力读者掌握这两种核心迭代机制。

在这里插入图片描述

前言

    Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。

在这里插入图片描述


在这里插入图片描述

🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。

🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。

🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。

🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。

🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。


Python入门:Python3 迭代器与生成器全面学习教程


🌐 前篇文章咱们讲解了 Python入门:Python3 推导式全面学习教程 ,如果忘记了,可以去重温一下,不停的重复敲击基础代码,有助于让你更加熟练掌握一门语言。今天咱们学习 Python3 迭代器与生成器全面学习教程,下面开始吧!

迭代和生成是 Python 中处理序列数据的核心机制,掌握迭代器与生成器不仅能让代码更高效,还能帮你理解 Python 底层的迭代逻辑。本文将从概念到实战,全面讲解迭代器与生成器的使用方法。

一、迭代器:遍历集合的高效工具

1. 什么是迭代器?

迭代器是一个可以记住遍历位置的对象,它从集合的第一个元素开始访问,直到所有元素被访问完结束,且只能向前遍历,不能后退

在 Python 中,迭代器是实现了迭代协议的对象,核心特征是:

  • 可通过 iter() 函数创建
  • 可通过 next() 函数获取下一个元素
  • 遍历结束时会触发 StopIteration 异常

2. 迭代器的基本使用

(1)创建迭代器

字符串、列表、元组等可迭代对象都能通过 iter() 函数创建迭代器:

# 列表创建迭代器示例
list_data = [1, 2, 3, 4]
it = iter(list_data)  # 创建迭代器对象

# 用 next() 获取元素
print(next(it))  # 输出:1
print(next(it))  # 输出:2
(2)遍历迭代器

迭代器可直接用 for 循环遍历,无需手动处理 StopIteration 异常:

list_data = [1, 2, 3, 4]
it = iter(list_data)
for x in it:
    print(x, end=" ")  # 输出:1 2 3 4

也可通过 while 循环配合 try-except 捕获异常:

import sys
list_data = [1, 2, 3, 4]
it = iter(list_data)

while True:
    try:
        print(next(it))  # 逐个获取元素
    except StopIteration:
        sys.exit()  # 遍历结束时退出
控制台输出

在这里插入图片描述

3. 自定义迭代器

通过类实现迭代器需重写两个方法:

  • __iter__():返回迭代器对象本身(通常返回 self
  • __next__():返回下一个元素,遍历结束时触发 StopIteration
示例:创建一个递增数字迭代器
class MyNumbers:
    def __iter__(self):
        self.a = 1  # 初始值
        return self
    
    def __next__(self):
        if self.a <= 10:  # 限制迭代次数
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration  # 触发停止异常

# 使用自定义迭代器
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
    print(x)  # 输出 1 到 10
控制台输出

在这里插入图片描述

二、生成器:简化迭代器的创建

1. 什么是生成器?

生成器是一种特殊的迭代器,通过 yield 关键字定义的函数创建。它无需手动实现 __iter__()__next__() 方法,就能实现迭代功能。

生成器的核心特点:

  • 调用生成器函数返回的是迭代器对象
  • 通过 yield 语句暂停执行并返回值
  • 再次调用时从上次暂停的位置继续执行

2. 生成器的基本使用

(1)简单生成器示例
def countdown(n):
    while n > 0:
        yield n  # 暂停并返回当前值
        n -= 1

# 创建生成器对象
generator = countdown(5)

# 逐步获取值
print(next(generator))  # 输出:5
print(next(generator))  # 输出:4

# 用 for 循环遍历剩余值
for value in generator:
    print(value)  # 输出:3 2 1

3. 生成器的优势

  • 内存高效:无需一次性生成所有数据,按需产生值,适合处理大量数据
  • 代码简洁:比自定义迭代器少写大量模板代码
  • 无缝集成:可直接用于 for 循环、列表推导等迭代场景

4. 实战:用生成器实现斐波那契数列

斐波那契数列是生成器的经典应用场景,通过 yield 可高效生成数列:

import sys

def fibonacci(n):
    a, b, counter = 0, 1, 0
    while True:
        if counter > n:
            return  # 结束生成器
        yield a  # 返回当前斐波那契数
        a, b = b, a + b  # 计算下一组值
        counter += 1

# 使用生成器
f = fibonacci(10)  # 生成前10个斐波那契数
while True:
    try:
        print(next(f), end=" ")  # 输出:0 1 1 2 3 5 8 13 21 34 55
    except StopIteration:
        sys.exit()
控制台输出

在这里插入图片描述

三、迭代器与生成器的区别

特性迭代器生成器
实现方式需手动实现 __iter__()__next__()通过 yield 关键字自动实现
内存占用需自定义控制数据生成逻辑自动按需生成,内存更高效
使用场景复杂迭代逻辑(如自定义集合)简单序列生成(如数列、数据流)

总结

迭代器和生成器是 Python 迭代机制的核心,迭代器适合自定义复杂遍历逻辑,生成器则是简化迭代器创建的高效工具。掌握它们不仅能提升代码性能,还能让你写出更 Pythonic 的代码。建议多通过实战练习(如处理大文件、生成无限序列)加深理解。

💡下一篇咱们学习 Python3 with关键字全面学习教程!

附录:扩展学习资源

  1. 官方资源
  2. 本专栏特色资源
    • 代码资源仓库:CSDN专属资源在线获取
    • 海量Python教程:关注公众号:xcLeigh,获取网盘地址
    • 一对一答疑:添加微信与博主在线沟通(备注“Python专栏”

联系博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

本文章已经生成可运行项目
评论 114
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcLeigh

万水千山总是情,打赏两块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值