Python:迭代器与生成器

本文深入探讨了Python中迭代器和生成器的概念,解释了它们的区别与联系,包括如何通过isinstance()判断对象是否可迭代,以及如何使用iter()和next()方法。同时,详细介绍了生成器的特性,如在函数中使用yield关键字实现状态的保存和恢复,以及生成器表达式的使用。

迭代器(iterator

迭代器一定是可以迭代的,可迭代的不一定是迭代器
可以通过isinstance()判断是否可迭代

isinstance([],Iterable)	#返回boolean

迭代器的两个基本方法iter(),next()
提示:next()是python2的方法,在python3中使用会报AttributeError

list = [1,2,3,4]
it = iter(list)
#方法一
for i in it:	#for循环遍历,在python中for循环会自动调用next
    print(i)
#方法二
 it.__next__()

生成器(Generator)

相当于一个特殊的迭代器,和普通函数不同的是,生成器是一个返回迭代器的函数,每一次遇到yield函数是会暂停保存当前的运行信息,返回yield的值,并在下一次执行next()方法的时候从当前位置继续运行
包含yield()函数的一定是生成器,包含yield的函数是生成器函数,调用生成器函数创建一个生成器,如下边的代码中的test

生成器函数:

def myYield():
    print("将生成a")
    yield "a"
    print("将生成b")
    yield "b"
    print("将生成c")
    yield "c"

test = myYield()

在这里插入图片描述
在这里插入图片描述

生成器表达式:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值