python中迭代器和生成器
时间: 2023-11-19 18:06:53 浏览: 97
迭代器和生成器是 Python 中用于处理可迭代对象的两种重要机制。
迭代器是一个实现了迭代协议的对象,它通过定义 `__iter__()` 和 `__next__()` 方法来实现。`__iter__()` 方法返回迭代器本身,而 `__next__()` 方法返回下一个元素。当没有更多元素时,`__next__()` 方法会引发 `StopIteration` 异常。可以使用内置的 `iter()` 函数从可迭代对象中获取迭代器。
生成器是一种特殊的迭代器,它使用函数来创建。生成器函数使用 `yield` 语句来产生一个值,并在下次调用时从离开的地方继续执行。与普通函数不同,生成器函数在调用时不会立即执行,而是返回一个生成器对象。可以使用 `next()` 函数或 `for` 循环来迭代生成器对象。
使用生成器可以有效地处理大型数据集或无限序列,因为它们按需生成值,而不需要一次性将所有值存储在内存中。
下面是一个迭代器和生成器的示例代码:
```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
value = self.data[self.index]
self.index += 1
return value
my_iter = MyIterator([1, 2, 3])
for num in my_iter:
print(num)
# 生成器示例
def my_generator(data):
for num in data:
yield num
my_gen = my_generator([1, 2, 3])
for num in my_gen:
print(num)
```
输出结果为:
```
1
2
3
1
2
3
```
希望以上内容能对你有所帮助!如果你还有其他问题,请随时提问。
阅读全文