我有目录列表,并且一次应返回此元素
所以我的编码如下:
def gen():
list = ["dir_1", "dir_2", ..., "dir_n"]
for i in list:
yield i
但是,我想一遍又一遍地获取目录,例如dir_1
,dir_2
,...,dir_n
,dir_1
,dir_2
。那样。
我应该怎么办?
答案 0 :(得分:4)
您可以使用循环,而无需其他生成器,只需在迭代器上调用cycle,它将永远循环下去
from itertools import cycle
for dir in cycle(["dir_1", "dir_2", "dir_n"]):
do stuff ...
if some_reason:
break
答案 1 :(得分:2)
您完全可以使用itertools.cycle
来描述:
from itertools import cycle
def gen():
lst = ["dir_1", "dir_2", "dir_n"]
for i in cycle(lst):
yield i
这样:
i = gen()
for _ in range(5):
print(next(i))
输出:
dir_1
dir_2
dir_n
dir_1
dir_2
答案 2 :(得分:1)
这是通过While
循环的解决方案。
def gen():
while True:
mylist = ["dir_1", "dir_2"]
for i in mylist:
yield i