python迭代器和生成器,每次遇到yield时


iter()用于创建迭代器,next()用于输出迭代器的下一个元素:

names = ['微湘菜', '小湘菜', '大湘菜', '巨湘菜']
iterName = iter(names)
for i in range(4):
    print(next(iterName))

结果为:

微湘菜
小湘菜
大湘菜
巨湘菜

 

创建一个迭代器需要在类中实现两个方法 __iter__() 与 __next__() ,这在python面向对象会详细解释

 

使用了yield的函数即生成器(generator),返回一个迭代器。每次遇到yield时会暂停运行,在下次执行是会从当前暂停位置继续运行:

def generator():
    print('s')
    while True:
        print('微湘菜')
        yield '小湘菜'
        print('大湘菜')


g = generator()
print(next(g))
print(next(g))

结果为:

s
微湘菜
小湘菜
大湘菜
微湘菜
小湘菜

 

一般在迭代器中都要存在循环,否则难以迭代

评论关闭