当前位置:  首页>> 技术小册>> Python面试指南

答案:
Python中的迭代器和生成器都是用来处理可迭代对象的工具。

迭代器是一个对象,它可以被遍历并返回一个值序列,通常用于处理大型数据集合,因为它可以逐个返回值,而不需要在内存中存储整个序列。迭代器是通过实现 iter() 和 next() 方法来实现的。
生成器是一个特殊的迭代器,它可以动态生成值序列。生成器使用 yield 语句来生成值,并在每次生成值后自动挂起和恢复函数的执行状态。生成器可以通过函数来实现,通常会更简洁和易于理解。
以下是一个迭代器和生成器的示例代码:

  1. # 创建一个迭代器
  2. class MyIterator:
  3. def __init__(self, start, end):
  4. self.current = start
  5. self.end = end
  6. def __iter__(self):
  7. return self
  8. def __next__(self):
  9. if self.current >= self.end:
  10. raise StopIteration
  11. value = self.current
  12. self.current += 1
  13. return value
  14. # 创建一个生成器
  15. def my_generator(start, end):
  16. current = start
  17. while current < end:
  18. yield current
  19. current += 1
  20. # 使用迭代器
  21. my_iterator = MyIterator(1, 5)
  22. for value in my_iterator:
  23. print(value) # 输出 1 2 3 4
  24. # 使用生成器
  25. my_generator = my_generator(1, 5)
  26. for value in my_generator:
  27. print(value) # 输出 1 2 3 4

在上面的示例中,我们创建了一个迭代器类 MyIterator,它实现了 iter() 和 next() 方法,并用于遍历一个整数序列。我们还定义了一个名为 my_generator 的生成器函数,它使用 yield 语句生成一个整数序列。

我们使用 MyIterator 和 my_generator 来遍历整数序列,并在每次迭代时打印出当前值。注意到,使用迭代器需要先创建一个实例,然后使用 for 循环遍历,而使用生成器可以直接调用生成器函数,并使用 for 循环遍历。