【发布时间】:2015-06-18 01:45:06
【问题描述】:
注意:更正的问题!
众所周知,itertools 允许轻松创建嵌套的for
使用itertools.product 循环。但以下是我想要但还不能做的事情。使用
lfl = int(input( "length of first loop: "))
nol = int(input( "number of loops: "))
原因:
- 循环长度:12
- 循环数:4
我想要一个等价于:
for i1 in range(1,12):
for i2 in range(i1,12):
for i3 in range(i2,12):
for i4 in range(i3,12):
function(i1,i2,i3,i4)
itertools.product 确实有很多人。
或者更一般的问题,nol 导致创建 func_1(x), func_2(x,y), .... func_nol-1(x,y,...) 并且代码需要是相当于:
for i1 in range(1,12):
for i2 in range(func_1(i1),12):
for i3 in range(func_2(i1,i2),12):
for i4 in range(func_3(i1,i2,i3),12):
function(i1,i2,i3,i4)
还有一个更进一步的概括是
for i1 in range(1,12):
for i2 in range(start_func_1(i1, *global),end_func_(12, *global)):
for i3 in range(start_func_2(i1,i2,*global),end_func_2(12,*global):
for i4 in range(start_func_3 etc....
【问题讨论】:
-
你所说的产品是什么意思。?
-
@timothy 你是如何使用
product的? -
@Kasra 我被内部循环范围打错了,我已经编辑了这个问题。
-
@matsjoyce,我很抱歉,使用
product的一种方法是为每个循环使用一个上限范围,因此作为上述问题的一个示例,我对“很多' 是product超过 [1,12] 四次包括我正在寻找的结果。但还有很多我不想要的。 -
你确定要
range(1, 12)吗?您将lfl = 12称为第一个循环的长度,但该范围的长度为11。
标签: python loops for-loop recursion nested