相关疑难解决方法(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万
查看次数

压缩"n"时间对象成员调用

是否有任何非显式for方法可以n在对象上调用成员时间?

我正在考虑一些map/reduce/lambda方法,但我想不出办法做到这一点 - 如果有可能的话.

只是添加上下文,我正在使用BeautifulSoup,我正在从html表中提取一些元素; 我提取了一些元素,然后是最后一个元素.

因为我有:

# First value
print value.text

# Second value
value = value.nextSibling
print value.text

# Ninth value
for i in xrange(1, 7):
    value = value.nextSibling
print value.text
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何lambda方法 - 或其他 - 允许我这样做:

# Ninth value
((value = value.nextSibling) for i in xrange(1, 7))
print value.text
Run Code Online (Sandbox Code Playgroud)

PS:不,这种for方法没有任何问题,除了我真的很喜欢单线解决方案,这在我的代码中非常适合.

python lambda for-loop beautifulsoup

3
推荐指数
1
解决办法
113
查看次数

标签 统计

for-loop ×2

python ×2

beautifulsoup ×1

lambda ×1