美文网首页
python生成器

python生成器

作者: zhuwen | 来源:发表于2017-05-04 17:22 被阅读0次

生成器

生成器是python特有的一个语法,包含yield 关键字的函数,当他被调用的时候,函数体中的代码不会被执行,而是返回一个迭代器。每次请求一个值,就会执行生成器中的代码,直到遇到一个yield或return语句。yield意味着生成一个值。return语句意味着生成器停止执行。
下面是一个简单的生成器

nested =   [[1,2],[3,4],[5]]
def flatten(nested):
     for sublist  in nested:
           for  element in sublist:
                   yield element

上述函数使用了双重循环,加上yield进行构造生成器的设置,yield 函数与return最大的区别在于,return语句返回一个值,而yield则是产生一个值,但是冻结他,函数停在那点等待被激活。函数被激活后从那一点开始执行。
下面是执行生成器来迭代所有的值

for num in flatten(nested):
      print num
1
2
3
4
5
list(flatten(nested))
[1,2,3,4,5]

递归生成器

def flatten(nested):
   try :
      for sublist  in nested:
          for element in flatten(sublist):
            yield element
   excepet TypeError:
          yield nested

其实生成器并非什么特殊的的魔法,他通过其他基本语句也能打到相同的目的,对于大多数生成器而言

yield some_expression

都·等价与

result.append(some_expression)

相关文章

网友评论

      本文标题:python生成器

      本文链接:https://www.haomeiwen.com/subject/malwzttx.html