生成器和生成器表达式面试题解析

Posted artfeb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器和生成器表达式面试题解析相关的知识,希望对你有一定的参考价值。

首先看一下面试题:打印结果会是什么呢?

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))

 

如何进行计算?碰到 for 循环时要拆开来计算;

当 n = 1 时:

g = (add(n, i) for i in g)

 

当n = 10

g = (add(n, i) for i in (add(n, i) for i in g))  # (add(n, i) for i in g) ---> (10+0,10+1,10+2,10+3) ---> (10,11,12,13)
g = (add(n,i) for i in (10,11,12,13)
g = (10+10,10+11,10+12,10+13)
g = (20,21,22,23)

 

这时 打印列表:list(g)结果:

[20, 21, 22, 23]

  

以上是关于生成器和生成器表达式面试题解析的主要内容,如果未能解决你的问题,请参考以下文章

迭代器可迭代对象迭代器对象生成器生成器表达式和相关的面试题

10 典型面试题深度解析

10 典型面试题深度解析

python面试题之生成器迭代器

笔试面试题实现

编写自定义表达式解析器或使用ANTLR库?