我是python的新手,我遇到了一个有趣的问题,上面写着:
实施发电机循环,以便如果我们分配
y = cycle()
然后重复呼叫
next(y)
返回值
food
pizza
hungry
food
pizza
hungry
在无尽的循环中。如果它不能管理一个无休止的循环,那么做1000个循环,然后停止。
不允许使用循环。我可以使用一种叫做流(无限列表(的东西。
我该怎么做?
实现生成器
cycle
你知道什么是生成器吗?如果没有,请阅读生成器和yield
关键字。
快速回答:
def cycle():
my_list = ["food", "pizza", "hungry"]
while True:
yield from my_list
输出:
>>> y = cycle()
>>> next(y)
'food'
>>> next(y)
'pizza'
>>> next(y)
'hungry'
>>> next(y)
'food'
诀窍是将三个yield
语句包装成一个无休止的循环。这样,它们将无限期地循环
def cycle():
while True:
yield 'food'
yield 'pizza'
yield 'hungry'
要打印前1000次迭代,请使用
y = cycle()
for i in range(1000):
print(next(y))