面试题1

  主要考察知识点:生成器从头到尾只能取一次值

def demo():
    for i in range(4):
        yield i

g = demo()
g1 = (i for i in g)
g2 = (i for i in g1)
print(list(g1))
print(list(g2))

  *list数据类型强转也可以读取生成器的值,g1被list读取完后g2已经读取不到了

面试题2   当for循环套上生成器表达式时就拆开,一定要注意生成器不调用时就不执行的特点(惰性)

def add(n,i):
    return n+i

def test():
    for i in range(4):
        yield i 

g = test()
for n in [1,10]:
    g = (add(n,i) for i in g)
print(list(g))

 

  

 

posted on 2018-11-02 20:53  幸福的小耗子  阅读(252)  评论(0编辑  收藏  举报