生成器可用于在Python中创建迭代器吗?

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

Python生成器是创建迭代器的简便方法。并且主要用于声明行为类似于迭代器的函数。

生成器是一种函数,我们很可能在日常生活中一次可能在一个值上进行迭代,每个程序员都将使用列表,字符串和Dict等可迭代对象。 

迭代器是可以通过循环进行迭代的对象。

以下示例说明了Generators在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__method和2. __next__method

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

  如果没有更多项返回,则__next__方法从迭代器返回下一个值,这将引发StopIteration Exception。

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
猜你喜欢