如何在python中创建N个嵌套for循环

时间:2015-10-23 12:05:24

标签: python

我想在python中使N嵌套for循环。 E.g:

for i in range(1,100):
    block1=i
    for j in range(1+i,100-i):
        block2=j
        for k in range(1+j,100-j):

        . . . 
            nth for loop:
                for nth in range(1+(prior for loop value),100-(prior for loop value))

在这个特定的例子中,我想要做的是检查一组n个变量的所有可能的值组合,假设变量是1到100之间的整数。例如,如果n是3,那么我想检查所有可能的组合,例如: 1,2,3 1,2,4 1,2,5 。 。 。 97,98,99。

同样,如果n为4,我想检查: 1,2,3,4 1,2,3,5 1,2,3,6 。 。 。 96,97,98,99

(我不需要检查相同数字的多个实例。例如,如果n = 3,则25,25,25将是浪费的计算。)

然后我会使用这些n个变量进行一些计算。

谢谢,如果我能提供进一步的澄清,请告诉我。

1 个答案:

答案 0 :(得分:1)

itertools模块具有迭代工具。通常,对于嵌套的for循环,您会想到itertools.product,但正如@RemcoGerlich所指出的那样,您似乎只想在字典顺序中生成增加的n元组。 itertools.combinations是为此而订的。

  

itertools.combinations(iterable,r)返回r的长度子序列   来自输入可迭代的元素。

     

组合以字典排序顺序发出。所以,如果输入   对iterable进行排序,组合元组将按排序生成   顺序。

     

根据元素的位置而不是元素,将元素视为唯一元素   值。因此,如果输入元素是唯一的,则不会重复   每个组合中的值。

尝试itertools.combinations(range(1,100), n)