使用递归函数或其他方法简化嵌套的for循环

Python simplifying nested for loops using recursive function or other methods(使用递归函数或其他方法简化嵌套的for循环)
本文介绍了使用递归函数或其他方法简化嵌套的for循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想简化以下代码:

import numpy as np
interval = 20
wgt = list(np.arange(0, 101, interval))

pairs = []
for a in wgt:
    for b in list(np.arange(0, 101-a, interval)):
        for c in list(np.arange(0, 101-a-b, interval)):
            for d in list(np.arange(0, 101-a-b-c, interval)):
                for e in list(np.arange(0, 101-a-b-c-d, interval)):
                    for f in list(np.arange(0, 101-a-b-c-d-e, interval)):
                        for g in list(np.arange(0, 101-a-b-c-d-e-f, interval)):
                            for h in list(np.arange(0, 101-a-b-c-d-e-f-g, interval)): 
                                for i in list(np.arange(0, 101-a-b-c-d-e-f-g-h, interval)):
                                    j = 100-a-b-c-d-e-f-g-h-i
                                    pairs.append([a,b,c,d,e,f,g,h,i,j])

最终,我希望获得重复循环N次的对。PAINS[]中的列数随着循环数的增加而增加。

有人可以简化上面的代码吗?我知道一种可能的解决方案是使用递归函数,但对于初学者来说,这是一项具有挑战性的任务。我不在乎您的代码是否包含其他方法或语法,只要它简化了代码即可。

提前感谢!

推荐答案

解决方案是以下递归函数:

def foo(n, wgt, s):
  if n==1:
    return [[100-s]]
  
  pairs = []
  for w in wgt:
    if s+w > 100: continue
    for t in f(n-1, wgt, s+w):
      pairs.append([w] + t)
  return pairs

,您可以使用以下命令生成所需的pairs列表:

import numpy as np
interval = 20
wgt = np.arange(0, 101, interval)
N = 10

pairs = foo(N, wgt, 0)

这篇关于使用递归函数或其他方法简化嵌套的for循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)