Python 在itertools中,如何在特定次数的迭代后打破循环?
我有一个重复的循环,我希望它在重复5次后停止重复:Python 在itertools中,如何在特定次数的迭代后打破循环?,python,python-3.x,itertools,cycle,Python,Python 3.x,Itertools,Cycle,我有一个重复的循环,我希望它在重复5次后停止重复: from itertools import cycle a = [1,2,3] for i in cycle(a): print (i) if i == 5: break 我期望的是123123。它在断裂前循环5次。相反,它会一直持续下去。在继续下一个代码之前,我如何使它只循环5次?在您的示例中,我是列表a中的值之一,永远不能是5。您应该使用以下内容: from itertools import cycle a
from itertools import cycle
a = [1,2,3]
for i in cycle(a):
print (i)
if i == 5:
break
我期望的是123123。它在断裂前循环5次。相反,它会一直持续下去。在继续下一个代码之前,我如何使它只循环5次?在您的示例中,我是列表a中的值之一,永远不能是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
在您的示例中,i是列表a中的一个值,永远不能是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对迭代器执行步骤,直到它达到给定的迭代次数
import itertools
n = 5
a = [1,2,3]
g = itertools.cycle(a)
for i in range(n*len(a)):
print(next(g))
你也可以看看itertools。重复-
您可以使用@Selcuk在其答案中提到的enumerate,也可以使用next对迭代器执行步骤,直到它达到给定的迭代次数
import itertools
n = 5
a = [1,2,3]
g = itertools.cycle(a)
for i in range(n*len(a)):
print(next(g))
你也可以看看itertools。重复-
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)
如果您只想将一个循环的全部内容重复三次,在每个循环上获得[1,2,3],而不是1,2,3,那么您可以使用repeat:
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)
如果您只想将一个循环的全部内容重复三次,在每个循环上获得[1,2,3],而不是1,2,3,那么您可以使用repeat:
显示一个等效的生成器函数-您可以使用它并向while循环添加一个计数器。您可以使用itertools.repeat例如:对于repeat[1,2,3],5:@AndrejKesely中的i,您应该将其作为答案发布。显示一个等效的生成器函数-你可以使用它并在while循环中添加一个计数器。你可以使用itertools.repeat例如:对于repeat[1,2,3],5:@AndrejKesely中的i,你应该将其作为答案发布。哦,你们都是对的。我误解了这个问题。现在修好了。哦,你们都对了。我误解了这个问题。现在修好了。