2024-05-21 05:30:22 发布
网友
我有一个重复的循环,我希望它在重复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次
123,123,123,123,123
itertools在这里提供所有工具;只需使用islice来限制输出的数量(在本例中为输入数量的五倍):
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:
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)
在您的示例中i是列表a中的一个值,不能是5。您应该使用^{}进行以下操作:
i
5
from itertools import cycle a = [1,2,3] for index, element in enumerate(cycle(a)): print (element) if index == 5 * len(a) - 1: break
您可以使用@Selcuk在其答案中提到的enumerate,也可以使用next步进迭代器,直到它达到给定的迭代次数
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()-
itertools.repeat()
import itertools n = 5 a = [1,2,3] for i in itertools.repeat(a, 5): for j in i: print(j)
itertools
在这里提供所有工具;只需使用islice
来限制输出的数量(在本例中为输入数量的五倍):如果您只想将
a
的全部内容重复三次(在每个循环上获得[1, 2, 3]
,而不是1
,然后2
,然后3
),您应该使用repeat
:在您的示例中} 进行以下操作:
i
是列表a
中的一个值,不能是5
。您应该使用^{您可以使用@Selcuk在其答案中提到的enumerate,也可以使用
next
步进迭代器,直到它达到给定的迭代次数您还可以查看
itertools.repeat()
-相关问题 更多 >
编程相关推荐