微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:替换多个 for 循环、多个迭代器

如何解决Python:替换多个 for 循环、多个迭代器

我需要你的帮助。如果它们都经过相同的范围(假设从 1 到 10)并且在最后一个 for 循环之后,那么替换多个嵌套 for 循环(超过 5 个嵌套循环相互 - 在代码示例中为 5 个)的最有效方法是什么,在底部,我将迭代项的每个总和附加到列表中。代码看起来像这样:

b=[]
for i in range(1,11):
    for j in range(1,11):
        for k in range(1,11):
            for l in range(1,11):
                for m in range(1,11):
                    b.append(i+j+k+l+m)

这显然不是内存友好的,需要一些时间。据我所知,itertools 在这里也帮不上忙。那么如何才能得到帮助呢?

解决方法

使用itertools.product()

from itertools import product
b = [sum(item) for item in product(range(1,11),repeat=5)]

你可能想制作 b 生成器,以便它被懒惰地评估

b = (sum(item) for item in product(range(1,repeat=5))
,

我推荐使用递归编程。当函数调用自身以使用不同的参数执行相同的任务时,就会发生这种情况。

def someIteration(b,i,j,k,l,m):
    for i in range(1,11):
        b.append(i+j+k+l+m)
    if (Certain task done):
         return b
    else:
        someIteration(b,m)

我不认为这个函数会直接工作,我建议在递归编程方面做一些研究。这是一个非常有趣的范式,主要用于人工智能!

优点:

  • 它的代码效率非常高

缺点:

  • 当堆栈已满时,它会崩溃(这种情况很少发生,大多数情况下是由于错误。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?