【发布时间】:2018-09-22 22:18:12
【问题描述】:
是否可以根据输入的长度在函数中添加/减少嵌套 for 循环的数量?
例如: 基于长度为 3 的某个输入,我可能需要使用 1 个嵌套的 for 循环(另一个 for 循环内的 for 循环)。与此类似,
for i in range(0, len(input)+1):
for j in range(i+1, len(input)+1):
但是,当输入长度为 4 时,如果我可以在已经存在的嵌套 for 循环中引入额外的 for 循环,我可以达到我的结果,这意味着,
for i in range(0, len(input)+1):
for j in range(i+1, len(input)+1):
for k in range(j+1, len(input)+1):`
同样,如果输入长度为5,那么我想再引入一个for循环,
for i in range(0, len(input)+1):
for j in range(i+1, len(input)+1):
for k in range(j+1, len(input)+1):
for l in range(k+1, len(input)+1):`
模式是,对于长度为 n 的输入,会有 n-1 个 for 循环。
是否可以在 Python 中创建这样的函数?
【问题讨论】:
-
听起来像是 XY 问题。您要解决的真正问题是什么?
-
我们可以举个例子。如果应用得当,再循环适合这里。
-
例如,我有一个数字/字母列表作为输入。 Input = [1,2,3,4] 我想创建所有单个元素的组合。与下面类似,[1],[2],[3],[4],[1,2],[1,3],[1,4],[2,3],[2,4], [3,4],[1,2,3],[1,2,4],[1,3,4],[2,3,4],[1,2,3,4] 也许,那里是解决实际问题的不同方法。但是在尝试解决这个问题时,我想出了嵌套 for 循环数量可变的问题。
-
这不是一个好的骗子@RafaelC;这个问题是关于可变数量的 for 循环,而您链接的所谓的欺骗是关于生成组合。
-
@ReblochonMasque 好吧,让问题公开。但只会说明指向正确解决方案的链接:stackoverflow.com/questions/464864/…。构建可变数量的 for 循环是一个糟糕的设计。