相关疑难解决方法(0)

避免嵌套for循环

我正在尝试使用python对另一个代码进行一些参数测试.我需要测试6个独立的参数,但我需要它们的所有可能组合.

每个参数都有一个最小值,一个最大值和一个需要传递给它的步长值.突然出现在我脑海中的第一个简单的解决方案是嵌套的for循环结构,看起来很可怕,如下所示:

for var1 in xrange(min1,max1,step1):
    for var2 in xrange(min2,max2,step2):
        ...
            ...
                ...
                    for var6 in xrange(min6,max6,step6):
                        '''
                        Do something and be icky in the process due
                        to being in the middle of six nested for loops
                        '''
Run Code Online (Sandbox Code Playgroud)

我决定了,不!这不能成立.所以我一直试图找到一种方法来递归地执行此操作,或者至少,不是嵌套六次.我无法真正想出一个好方案.对我来说最大的障碍是每个变量都有不同的最小值,最大值和步长值.

到目前为止,我的想法并不是很有帮助.我一直在尝试使一些递归函数工作,但是如果没有在函数中嵌套更多的循环,我就无法弄明白.我在这里看到了很多对itertools.product的引用,但我也无法弄清楚如何使这项工作成功.

编辑:我正在做的是创建一个以参数组合命名的目录,使用这些参数编写文件,使用此文件运行另一个代码,以及分析该代码的输出.除了最后一个,我几乎没有在for循环中做任何事情.很多参数只有2个值,有些有10个,有些有3个...它只是有点不同.

python for-loop

26
推荐指数
2
解决办法
1万
查看次数

迭代动态数量的for循环(Python)

我正在使用python来排序一些数字.我想创建一个函数,允许我输入一个值(4,8,16,32,64等),创建一个数字数组,并重新排列它们的序列.

我添加了详细说明如何确定value = 4和8的序列的数字.

对于value = 4,数组(x = [0,1,2,3])应分成两部分([0,1]和[2,3]),然后根据每个数组中的第一个数字进行组合([ 0,2,1,3]).

图中序列的值= 4

对于值= 8,数组(x = [0,1,2,3,4,5,6,7])应分为两个([0,1,2,3]和[4,5,6, 7]).两个阵列应再次分成两部分([0,1,2,3]分为[0,1]和[2,3]和[4,5,6,7]分为[4,5]和[6, 7]).然后应该根据每个数组中的第一个数字和第二组数组的序列([0,4,2,6,1,5,3,7])组合数组.

值的序列图= 8

我不知道如何处理递归(动态嵌套for循环).我试图循环通过拆分数组创建的每个brach.我查看了itertools和递归(具有不同数量的For Loops(python)的函数),但我无法使其工作.下面,我添加了代码来说明到目前为止的方法.

任何帮助深表感谢.我也愿意接受其他想法来确定序列.

我正在使用python 2.7.6和numpy.

码:

import numpy
value = 4
a = []
x = numpy.arange(value)
y = numpy.array_split(x, 2)
for i in range(2):
    for j in y:
        a.append(j.tolist()[i])
print(a)
Run Code Online (Sandbox Code Playgroud)

输出:

[0, 2, 1, 3]
Run Code Online (Sandbox Code Playgroud)

码:

import numpy
value = 8
a = []
x = numpy.arange(value)
y = numpy.array_split(x, 2)
for i in range(2):
    for h in range(2):
        for j …
Run Code Online (Sandbox Code Playgroud)

python arrays for-loop numpy

7
推荐指数
1
解决办法
885
查看次数

使用循环中的参数具有不同数量的 for 循环的函数

首先我想说我已经读过这个帖子:

\n\n

具有不同数量的 For 循环的函数 (python)

\n\n

虽然它看起来确实与我想知道的相似,但我(根本)对递归还不够熟练,无法使其发挥作用。

\n\n

如果我有以下片段:

\n\n
I = ["i" + str(i+1) for i in range(3)]\nJ = ["j" + str(i+1) for i in range(4)]\nK = ["k" + str(i+1) for i in range(2)]\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我可以创建一个执行以下操作的函数:

\n\n
def f(*Sets):\n    size = len(Sets)\n    if size == 1:\n        for i in Sets[0]:\n            print(i)\n    elif size == 2:\n        for i in Sets[0]:\n            for j in Sets[1]:\n                print(i,j)\n    elif size == 3:\n        for i in Sets[0]:\n            for j in Sets[1]:\n                for k …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
289
查看次数

标签 统计

python ×3

for-loop ×2

arrays ×1

numpy ×1

python-3.x ×1