美文网首页
迭代器|生成器|可迭代对象

迭代器|生成器|可迭代对象

作者: Cui_Shu | 来源:发表于2022-06-15 23:18 被阅读0次
"""
迭代器的定义:
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)

相关文章

  • Python基础-16生成器-迭代器

    16.生成器-迭代器     可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象,在Python中提供...

  • Python可迭代对象,迭代器,生成器关系

    列表,元组,字符串,迭代器,生成器都是可迭代对象。所以,可迭代对象不一定是迭代器,生成器。 将一个可迭代对象传递给...

  • 迭代器

    可迭代对象(Iterable): for迭代器(Iterator): for + next生成器属于迭代器。 验...

  • 可迭代对象、迭代器、生成器

    可迭代对象 --> 迭代器 --> 生成器; 可迭代对象:实现了__iter__()方法的对象,该方法返回迭代对象...

  • yield and Iterator

    Generator(生成器) 生成器是特殊的迭代器,迭代器不一定是生成器。 生成器与迭代器均是可迭代对象。 目前学...

  • 迭代机制

    可迭代对象、迭代器、生成器、生成式区别 a. 可迭代对象: 一个对象能够被迭代的使用,这个对象就是可迭代对象 b....

  • python生成器、迭代器、可迭代对象

    可迭代对象 迭代器 生成器 1.可迭代对象 可以被for循环遍历的对象成为可迭代对象,其中包括list、str、t...

  • 2-1迭代对象、迭代器、生成器

    可迭代对象、迭代器和生成器的关系 可迭代对象 可迭代对象实现某种接口,对与列表内部实现了__iter__()方法,...

  • Python迭代器和生成器

    所有的生成器都是迭代器;从可迭代的对象中获取迭代器 一、序列可迭代的原因:iter函数 迭代对象x时,自动调用it...

  • 迭代器和生成器

    迭代器和生成器 迭代器 hasattr(list,'iter')True 判断列表是否为可迭代对象 lst = [...

网友评论

      本文标题:迭代器|生成器|可迭代对象

      本文链接:https://www.haomeiwen.com/subject/khsfvrtx.html