迭代器和生成器都是 Python 中用于处理可迭代对象的工具。
一、迭代器
1. 定义:
- 迭代器是一个可以记住遍历位置的对象。
- 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
2. 特点:
- 迭代器提供了一种不依赖索引的访问集合元素的方式。
- 节省内存,因为它不需要一次性加载整个集合到内存中。
3. 举例:
- 对于列表、元组、字符串等可迭代对象,可以使用 iter() 函数将其转换为迭代器。
my_list = [1, 2, 3]
my_iterator = iter(my_list)
print(next(my_iterator)) 输出 1
print(next(my_iterator)) 输出 2
print(next(my_iterator)) 输出 3
二、生成器
1. 定义:
- 生成器是一种特殊的迭代器,它可以在需要的时候生成值,而不是一次性生成所有的值并存储在内存中。
2. 特点:
- 节省内存,尤其适用于处理大量数据。
- 使用 yield 关键字来暂停和恢复函数的执行,从而实现值的逐步生成。
3. 举例:
- 使用生成器函数来创建生成器。
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) 输出 1
print(next(gen)) 输出 2
print(next(gen)) 输出 3
- 还可以使用生成器表达式来创建生成器,它类似于列表推导式,但使用圆括号而不是方括号。
my_generator = (i for i in range(3))
print(next(my_generator)) 输出 0
print(next(my_generator)) 输出 1
print(next(my_generator))