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