"""
迭代器的定义:
1. 类中含有__init__() 和 __next__() 方法
2. __iter__() 返回对象本身,即self
3. __next__() 返回下一个迭代数据,如果没有数据了,则抛出StopIteration异常,终止迭代
"""
class IteratorDemo():
def __init__(self):
self.counter = 0
def __iter__(self):
return self
def __next__(self):
self.counter += 1
if self.counter >= 3:
raise StopIteration()
return self.counter
# 实例化迭代器
it = IteratorDemo()
# 可以被next()函数调用,并不断返回下一个值的对象称为迭代器
v1 = next(it)
"""
生成器函数的定义:
1. 函数内使用yield关键字,即生成器函数
2. 生成器对象(内部是根据生成器类generator创建的对象),生成器类内部也声明了:__iter__() 和 __next__() 方法
生成器实际上是一种特殊的迭代器
"""
def generatorFunc():
yield 1
print(123)
# 创建生成器对象
g = generatorFunc()
# print(next(g))
# print(next(g))
"""
可迭代对象的定义:
1. 类中含有__iter__() 方法,且返回一个迭代器对象|生成器对象
"""
class IterbleDemo():
def __iter__(self):
return IteratorDemo()
# 实例化可迭代对象
it = IterbleDemo()
# 可迭代对象是可以使用for来进行循环,在循环的内部其实是先执行__iter__()方法,获取其迭代对象,然后在内部执行这个迭代器对象的next()功能,逐步取值
for i in it:
print(i)
迭代器|生成器|可迭代对象
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1. 概念理解 迭代是Python语言的强大功能之一,主要用来对集合元素进行访问。 可迭代对象(iterable)...
- 生成器:我实现了这样一个功能你试试 列表: 这个简单。 都准备好了,点火 开炮 完成后我们来取一下90~100的元...