我想在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个变量进行一些计算。
谢谢,如果我能提供进一步的澄清,请告诉我。
答案 0 :(得分:1)
itertools
模块具有迭代工具。通常,对于嵌套的for
循环,您会想到itertools.product
,但正如@RemcoGerlich所指出的那样,您似乎只想在字典顺序中生成增加的n元组。 itertools.combinations
是为此而订的。
itertools.combinations(iterable,r)返回r的长度子序列 来自输入可迭代的元素。
组合以字典排序顺序发出。所以,如果输入 对iterable进行排序,组合元组将按排序生成 顺序。
根据元素的位置而不是元素,将元素视为唯一元素 值。因此,如果输入元素是唯一的,则不会重复 每个组合中的值。
尝试itertools.combinations(range(1,100), n)