python迭代器与生成器
时间: 2023-08-30 21:11:48 浏览: 106
深入讲解Python中的迭代器和生成器
在Python中,迭代器是一个实现了迭代协议的对象,即实现了`__iter__`和`__next__`方法。迭代器对象可以被用于for循环中,或者通过调用`next()`方法来逐个访问元素。如果没有更多元素可供访问,`next()`方法会抛出StopIteration异常。
例如,下面是一个简单的迭代器示例:
```python
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
result = self.data[self.index]
self.index += 1
return result
# 使用迭代器
my_iterator = MyIterator(['a', 'b', 'c'])
for item in my_iterator:
print(item)
```
生成器是一种用于创建迭代器的简便方式。生成器使用`yield`语句来返回一个值,并暂停函数的执行状态,直到下一次调用。生成器函数可以用于for循环中,就像迭代器一样。
下面是一个简单的生成器示例:
```python
def my_generator(data):
for item in data:
yield item
# 使用生成器
my_generator_obj = my_generator(['a', 'b', 'c'])
for item in my_generator_obj:
print(item)
```
生成器的优势在于可以在需要时生成值,而不必一次性生成所有值,从而节省内存。此外,生成器可以很方便地实现无限序列,例如斐波那契数列。
阅读全文