迭代器:迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
生成器:使用了 yield 的函数被称为生成器,在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象
my_l = [1, 2, 3, 4]
for i in my_l:
print(i) # 成员遍历
# 迭代器 iter
my_iter = iter(my_l)
print(my_iter.__next__()) # 返回__next__ 返回迭代器对象
print(next(my_iter))
print('-1--------')
for i in my_iter:
print(i) # 返回迭代器成员值
while True:
try:
n = my_iter.__next__()
print(n)
except:
print('------2------')
break
def my_generator():
"""生成器"""
for i in range(1,5):
# 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,
# 返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
print('生成前')
yield i
print('生成后')
# 调用生成器,得到一个迭代器
m = my_generator()
print(m)
print(m.__next__())
print(m.__next__())
执行结果如下: