可迭代对象:实现了__iter__方法的对象,如列表,元组,字典,通过iter()来生成迭代器
迭代器:实现了__next__方法的可迭代对象,通过next()来访问
生成器:使用了yield的函数,返回迭代器
- 迭代器
例子:
class Fib:
def __init__(self):
self._a = 0
self._b = 1
def __iter__(self):
return self
def __next__(self):
self._a, self._b = self._b, self._a + self._b
return self._a
for i, f in enumerate(Fib()):
print(f)
if i > 10:
break
a = Fib()
print(next(a))
输出结果:
1
1
2
3
5
8
13
21
34
55
89
144
1
- 可迭代对象和迭代器
例子:创建迭代器
list = [1, 2, 3, 4]
it = iter(list) # 创建迭代器对象
for x in it:
print(x, end=" ")
输出结果:
1 2 3 4
- 生成器
例子:
#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print(next(f), end=" ")
except StopIteration:
sys.exit()
输出结果:
0 1 1 2 3 5 8 13 21 34 55
博客介绍了Python中可迭代对象、迭代器和生成器的概念。可迭代对象实现了__iter__方法,可通过iter()生成迭代器;迭代器实现了__next__方法,可通过next()访问;生成器是使用yield的函数,返回迭代器。还给出了相关例子及输出结果。
1636

被折叠的 条评论
为什么被折叠?



