如何无限使用产量列表元素

时间:2019-04-12 15:15:15

标签: python python-3.x

我有目录列表,并且一次应返回此元素

所以我的编码如下:

def gen():
    list = ["dir_1", "dir_2", ..., "dir_n"]
    for i in list:
        yield i

但是,我想一遍又一遍地获取目录,例如dir_1dir_2,...,dir_ndir_1dir_2。那样。

我应该怎么办?

3 个答案:

答案 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