Python 动态创建嵌套for循环?

Python 动态创建嵌套for循环?,python,for-loop,Python,For Loop,我怀疑我错过了一些超基本的东西,只是把这个问题看错了,所以如果有人能给我指出正确的方向,我会很高兴。我的问题是: 我有一个变量列表,为了简单起见,它们总是包含值。我想让我的代码检查所有可能的选项。下面是我很快想到的方法: num_apples = 100 num_pears = 100 for current_apple in range(0,num_apples+1): for current_pear in range(0, num_pears+1): print

我怀疑我错过了一些超基本的东西,只是把这个问题看错了,所以如果有人能给我指出正确的方向,我会很高兴。我的问题是:

我有一个变量列表,为了简单起见,它们总是包含值。我想让我的代码检查所有可能的选项。下面是我很快想到的方法:

num_apples = 100
num_pears = 100

for current_apple in range(0,num_apples+1):
    for current_pear in range(0, num_pears+1):
        print current_apple, " - ", current_pear
这段代码的优点是我可以很容易地打破循环(比如说,我不想要current_apple+current_pear>50或其他什么),但主要的缺点是我需要明确知道我从多少个变量(在本例中是水果)开始,而我通常不知道

有没有一种方法可以动态地创建上面的for循环类型结构,这样我就可以控制何时中断子循环,但不知道提前会有多少变量


编辑:理想情况下,我认为这对我来说会更容易,如果我可以一次增加一个变量的大小,这样一旦变量超出对我有用的范围,我就可以跳出循环。

itertools.product
相当于嵌套for循环


你不能用递归吗?递归是最好的answer@ColonelThirtyTwo抱歉,已经有一段时间了,我将研究递归。谢谢<代码>而可能是一个更容易的选择,如果您可以定义应该退出循环的条件。您必须提前知道“超出范围”的值,因此您必须有一种方法来计算该值,甚至可以生成代码的动态部分以在那里中断。既然您可以根据输入计算最终目标,为什么不能在示例中使用循环中的标准中断呢。或者为递归函数做一个基本的例子?我也在考虑一个itertools解决方案,但是如果你事先不知道计数的话,这是行不通的…我认为这是OP的问题,虽然不太清楚。@TimPietzcker如果不再需要,您可以中断循环或停止从生成器检索元素。我试图运行它,但不确定如何阻止项目增长。例如,假设我有10个项目,每个项目的范围为10。如果第四个项目达到4,我如何阻止该项目增长,但让它继续增长其他数字?@Lostsoul打破循环?@ColonelThirtyTwo:这如何允许其他变量增长?
>>> import itertools
>>> counts = [1, 2, 3]
>>> ranges = [range(x) for x in counts]
>>> for i in itertools.product(*ranges):
...     print i
... 
(0, 0, 0)
(0, 0, 1)
(0, 0, 2)
(0, 1, 0)
(0, 1, 1)
(0, 1, 2)
>>>