如何解决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 在这里也帮不上忙。那么如何才能得到帮助呢?
解决方法
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 举报,一经查实,本站将立刻删除。