我有一个循环重复,我希望它停止重复之后,假设5次重复:
from itertools import cycle
a = [1,2,3]
for i in cycle(a):
print (i)
if i == 5:
break我期待的是123,123,123,123,123。它在断裂前骑车5次。相反,它会永远持续下去。在进入下一段代码之前,我如何使它循环5次呢?
发布于 2020-10-14 23:15:12
itertools提供了这里的所有工具;只需在islice中包装以限制输出的数量(在本例中为输入数的五倍):
from itertools import cycle, islice
a = [1,2,3]
for i in islice(cycle(a), 5*len(a)): # Loops 15 times with a single value each time
print(i)
# Or equivalently:
from itertools import chain, repeat
for i in chain.from_iterable(repeat(a, 5)):
print(i)如果只想让a的全部内容重复三次(在每个循环中获得[1, 2, 3]而不是1,然后是2,然后是3),则可以使用repeat:
from itertools import repeat
a = [1,2,3]
for x in repeat(a, 5): # Loops five times, producing the same list over and over
print(x)发布于 2020-10-14 22:52:10
在您的示例中,i是列表a中的一个值,永远不可能是5。您应该在以下方面使用enumerate:
from itertools import cycle
a = [1,2,3]
for index, element in enumerate(cycle(a)):
print (element)
if index == 5 * len(a) - 1:
break发布于 2020-10-14 23:07:32
您可以使用@Selcuk在回答中提到的枚举,也可以使用next对迭代器进行分步,直到迭代器达到给定的迭代次数为止。
import itertools
n = 5
a = [1,2,3]
g = itertools.cycle(a)
for i in range(n*len(a)):
print(next(g))你也可以看看itertools.repeat() -
import itertools
n = 5
a = [1,2,3]
for i in itertools.repeat(a, 5):
for j in i:
print(j)https://stackoverflow.com/questions/64362539
复制相似问题