Python面向对象编程中的迭代器与生成器
发布时间: 2023-12-19 23:40:32 阅读量: 37 订阅数: 38
### 1. 理解迭代器与生成器
迭代器与生成器是Python中非常重要且常用的概念,它们在处理数据、优化代码以及处理大数据集等方面发挥了重要作用。在本章中,我们将深入探讨迭代器与生成器的概念、特点以及应用场景,为后续的实际操作奠定扎实的基础。
### 2. 迭代器的使用
迭代器是Python中用于遍历可迭代对象的工具,可以通过迭代器按需生成值,而不必提前生成和存储所有的值。在本章节中,我们将介绍如何创建迭代器对象、迭代器的迭代方式以及如何自定义迭代器。
#### 2.1 创建迭代器对象
要创建一个迭代器对象,我们可以使用`iter()`函数将可迭代对象转换为迭代器。下面是一个简单的例子,将一个列表转换为迭代器并输出其中的值:
```python
# 创建迭代器对象
my_list = ['apple', 'banana', 'cherry']
my_iter = iter(my_list)
# 输出迭代器中的值
print(next(my_iter)) # 输出:'apple'
print(next(my_iter)) # 输出:'banana'
print(next(my_iter)) # 输出:'cherry'
```
#### 2.2 迭代器的迭代方式
迭代器对象可以使用`next()`函数来逐个输出其中的值,当迭代器中的所有值都被输出后,再次调用`next()`函数将引发`StopIteration`异常。下面是一个使用迭代器的例子:
```python
# 创建迭代器对象
my_tuple = ('apple', 'banana', 'cherry')
my_iter = iter(my_tuple)
# 迭代输出
while True:
try:
print(next(my_iter))
except StopIteration:
break
```
#### 2.3 自定义迭代器
除了通过`iter()`函数将可迭代对象转换为迭代器外,我们还可以自定义迭代器类。自定义迭代器类需要包含`__iter__()`和`__next__()`方法,其中`__iter__()`返回迭代器对象自身,`__next__()`用于返回迭代器中的下一个值。下面是一个简单的自定义迭代器的例子:
```python
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 10:
x = self.a
self.a += 1
return x
else:
raise S
```
0
0