Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在itertools中,如何在特定次数的迭代后打破循环?_Python_Python 3.x_Itertools_Cycle - Fatal编程技术网

Python 在itertools中,如何在特定次数的迭代后打破循环?

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

我有一个重复的循环,我希望它在重复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 = [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,你应该将其作为答案发布。哦,你们都是对的。我误解了这个问题。现在修好了。哦,你们都对了。我误解了这个问题。现在修好了。