面试题
def add(a, b):
return a + b
def test():
for r_i in range(4):
yield r_i
g = test()
for n in [2, 10]:
g = (add(n, i) for i in g)
print(list(g))
友情提示: 惰性机制, 不到最后不会拿值
这个题要先读一下. 然后自己分析出结果. 最后用机器跑一下.
小知识点:yield from
在python3中提供了一种可以直接把可迭代对象中的每一个数据作为生成器的结果进行返回
def gen():
lst = ["麻花藤", "胡辣汤", "微星牌饼铛", "Mac牌锅铲"]
yield from lst
g = gen()
for el in g:
print(el)
小坑: yield from是将列表中的每一个元素返回. 所以. 如果写两个yield from 并不会产生交替的效果.
def gen():
lst = ["麻花藤", "胡辣汤", "微星牌饼铛", "Mac牌锅铲"]
lst2 = ["饼铛还是微星的好", "联想不能煮鸡蛋", "微星就可以", "还可以烙饼"]
yield from lst
yield from lst2
g = gen()
for el in g:
print(el)
效果:
麻花藤
胡辣汤
微星牌饼铛
Mac牌锅铲
饼铛还是微星的好
联想不不能煮鸡蛋
微星就可以
还可以烙烙饼