首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化嵌套循环

简化嵌套循环
EN

Stack Overflow用户
提问于 2021-09-20 20:11:21
回答 2查看 79关注 0票数 2

我正在寻找一种更短的(可能是递归的)方式来编写以下内容:

代码语言:javascript
复制
for x1 in range(10):
    for x2 in range(10 - x1):
        for x3 in range(10 - (x1 + x2)):
            for x4 in range(10 - (x1 + x2 + x3)):
                print(x1,x2,x3,x4)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-20 20:30:35

你想要的是过滤过的产品。为此使用itertools,不需要递归。

代码语言:javascript
复制
from itertools import product

n=10
for x1, x2, x3, x4 in filter(lambda x: sum(x) < n, product(range(n), repeat=4)):
    print(x1, x2, x3, x4)

输出:

代码语言:javascript
复制
0 0 0 0
0 0 0 1
0 0 0 2
0 0 0 3
0 0 0 4
0 0 0 5
0 0 0 6
0 0 0 7
0 0 0 8
0 0 0 9
0 0 1 0
...
9 0 0 0
票数 2
EN

Stack Overflow用户

发布于 2021-09-20 20:17:23

以下是一些让你前进的提示,然后如果你陷入困境,你可以问更多有针对性的问题:为了找到一个递归的公式,首先给出你想要达到的目标的高级描述,然后看看你是否能识别问题的递归性质。要做到这一点,您可能需要概括您的问题。

因此,让我以具体的形式对你的问题进行高层次的描述:

“打印出所有4元组的非负数,使它们的和为4。”

我会把它概括为

“打印出所有非负数的n元组,使它们的和为k。”

现在,如果您可以递归地解决该任务,请尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69260276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档