动态创建嵌套for循环?

时间:2014-07-17 14:25:39

标签: 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 current_apple, " - ", current_pear

关于这段代码的好处是我可以轻松地摆脱循环(即说我不想要current_apple + current_pear> 50或者其他东西),但主要的缺点是我需要具体知道有多少变量(在这种情况下是水果),我开始并经常不知道。

有没有办法动态创建上面的for循环类型结构,这样我就可以控制何时打破子循环,但又不知道我提前有多少变量?

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

1 个答案:

答案 0 :(得分:6)

itertools.product相当于嵌套for循环。

https://docs.python.org/2/library/itertools.html#itertools.product

>>> 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)
>>>