1.迭代器生成
>>> list = [0,1,2,3,4]
>>> list
[0, 1, 2, 3, 4]
>>> it = iter(list)
>>> print(next(it))
0
>>> print(next(it))
1
>>> print(next(it))
2
>>> print(next(it))
3
>>> print(next(it))
4
2.迭代器遍历
>>> list=[1,2,3,4]
>>> it = iter(list)
>>> for i in it:
... print(i)
...
1
2
3
4
>>> import sys
>>> while True:
... try:
... print(next(it))
... except StopIteration:
... sys.exit()
3.创建一个迭代器
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a < 20:
x = self.a
self.a += 1
return x
else:
aise StopIteration
myclass = MyNumbers()
yiter = iter(myclass)
print(next(myiter))
for x in myiter:
print(x)
4.生成器
在Python中,使用了yield的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值, 并在下一次执行next()方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
retur n
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()