面试题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))