Python 中可以使用生成器创建迭代器吗?


是的,我们可以在 Python 中使用迭代器创建生成器。创建迭代器很容易,我们可以使用关键字 `yield` 语句来创建生成器。

Python 生成器是一种创建迭代器简单易用的方法,主要用于声明一个像迭代器一样工作的函数。

生成器是一个函数,我们可以一次迭代一个值,在日常生活中,每个程序员都会使用可迭代对象,例如列表、字符串和字典等。

迭代器是一个可以通过循环迭代的对象。

下面的例子显示了生成器在 Python 中引入了 `Yield` 语句,它的作用类似于返回值。

示例

def generator():
   print("program working sucessfully")
   yield 'x'
   yield 'y'
   yield 'z'
generator()

输出

<generator object generator at 0x000000CF81D07390>

也可以使用 for 循环创建生成器

示例

for i in generator():
print(i)

输出

program working sucessfully
x
y
z


迭代器对象支持两种方法:1. **__iter__ 方法** 和 2. **__next__ 方法**

__iter__ 方法返回迭代器对象本身。主要用于循环和 in 语句。

__next__ 方法返回迭代器中的下一个值,如果没有更多项返回,则应引发 StopIteration 异常。

示例

class function(object):
   def __init__(self, lowtemp, hightemp):
      self.current = lowtemp
      self.high = hightemp
   def __iter__(self):
      'Returns itself as an iterator object'
      return self
   def __next__(self):
      'Returns the next value till current is lower than high'
      if self.current > self.high:
         raise StopIteration
      else:
         self.current += 1
         return self.current - 1
c = function(3,20)
for i in c:
print(i, end=' ')

输出

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

更新时间: 2019-07-30

276 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告