Python 动态嵌套循环递归

Python 动态嵌套循环递归,python,for-loop,nested,Python,For Loop,Nested,我想生成一个数字列表,这些数字是按升序排列的 for x in range(1,10): for y in range(x,10): for z in range(y,10): print(x,y,z) 我是否可以将其转换为递归,以便改变嵌套深度 注: 在我的应用程序中,除了打印之外,我还有其他一些东西,我希望将打印报表的负担降到最低 我知道itertools.product和不适合我的目的,因为我以后必须删除不必要的组合 由于同样的原因,生成所

我想生成一个数字列表,这些数字是按升序排列的

for x in range(1,10):
    for y in range(x,10):
        for z in range(y,10):
            print(x,y,z)
我是否可以将其转换为递归,以便改变嵌套深度

注:

在我的应用程序中,除了打印之外,我还有其他一些东西,我希望将打印报表的负担降到最低

我知道
itertools.product
不适合我的目的,因为我以后必须删除不必要的组合

由于同样的原因,生成所有
n
数字并删除不必要的数字也不起作用


谢谢这里,您必须传递数字列表和深度,这样您就可以通过每次
递归不断增加列表

def get_nums(深度=0,前置列表=[[1]]):
如果深度=0:
返回预处理列表
新列表=[]
对于pre_列表中的num:
n=num[-1]
对于范围内的i(n,10):
新列表。追加(num+[i])
返回获取nums(深度1,新列表)
打印(获取数字(3))

这里有一个递归解决方案

def rec(s,idx,num):
如果idx>=len(s)-1:
印刷品
返回
对于范围内的i(数值,10):
s[idx+1]=i#更改下一个数字
rec(s,idx+1,i)#递归
s=[1,1,1]
idx=-1
num=s[0]
记录(s,idx,num)

输出

[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 1, 4]
[1, 1, 5]
[1, 1, 6]
[1, 1, 7]
[1, 1, 8]
[1, 1, 9]
[1, 2, 2]
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 2, 6]
[1, 2, 7]
[1, 2, 8]
[1, 2, 9]
[1, 3, 3]
...and so on until [9,9,9]
你需要


你想要一个数字列表吗?不是真的,现在我有一个元组列表,用下面的列表理解生成,但是任何格式都可以。我基本上是在寻找algo.test=[(x,y,z)对于范围内的x(1,10)对于范围内的y(x,10)对于范围内的z(y,10)如果和((x,y,z))==10]什么让你认为递归更好?将问题描述为最终目标,而不是解决方案。那么,您的评论中的列表理解有什么问题?非常感谢Ateryagaurav查看此内容和您的贡献。那么您想要的是数字列表,而不是数字?你说格式不重要,不管怎样,我已经编辑了这个来输出列表。这也是一个很好的解决方案。最后我用了这个。非常感谢
>>> import itertools
>>> list(itertools.combinations_with_replacement(range(1, 10), 2))
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (5, 5), (5, 6), (5, 7), (5, 8), (5, 9), (6, 6), (6, 7), (6, 8), (6, 9), (7, 7), (7, 8), (7, 9), (8, 8), (8, 9), (9, 9)]

>>> list(itertools.combinations_with_replacement(range(1, 10), 3))
[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4), (1, 1, 5), (1, 1, 6), (1, 1, 7), (1, 1, 8), (1, 1, 9), (1, 2, 2), (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 2, 7), (1, 2, 8), (1, 2, 9), (1, 3, 3), (1, 3, 4), (1, 3, 5), (1, 3, 6), (1, 3, 7), (1, 3, 8), (1, 3, 9), (1, 4, 4), (1, 4, 5), (1, 4, 6), (1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 5, 5), (1, 5, 6), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 6, 6), (1, 6, 7), (1, 6, 8), (1, 6, 9), (1, 7, 7), (1, 7, 8), (1, 7, 9), (1, 8, 8), (1, 8, 9), (1, 9, 9), (2, 2, 2), (2, 2, 3), (2, 2, 4), (2, 2, 5), (2, 2, 6), (2, 2, 7), (2, 2, 8), (2, 2, 9), (2, 3, 3), (2, 3, 4), (2, 3, 5), (2, 3, 6), (2, 3, 7), (2, 3, 8), (2, 3, 9), (2, 4, 4), (2, 4, 5), (2, 4, 6), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 5, 5), (2, 5, 6), (2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 6, 6), (2, 6, 7), (2, 6, 8), (2, 6, 9), (2, 7, 7), (2, 7, 8), (2, 7, 9), (2, 8, 8), (2, 8, 9), (2, 9, 9), (3, 3, 3), (3, 3, 4), (3, 3, 5), (3, 3, 6), (3, 3, 7), (3, 3, 8), (3, 3, 9), (3, 4, 4), (3, 4, 5), (3, 4, 6), (3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 5, 5), (3, 5, 6), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 6, 6), (3, 6, 7), (3, 6, 8), (3, 6, 9), (3, 7, 7), (3, 7, 8), (3, 7, 9), (3, 8, 8), (3, 8, 9), (3, 9, 9), (4, 4, 4), (4, 4, 5), (4, 4, 6), (4, 4, 7), (4, 4, 8), (4, 4, 9), (4, 5, 5), (4, 5, 6), (4, 5, 7), (4, 5, 8), (4, 5, 9), (4, 6, 6), (4, 6, 7), (4, 6, 8), (4, 6, 9), (4, 7, 7), (4, 7, 8), (4, 7, 9), (4, 8, 8), (4, 8, 9), (4, 9, 9), (5, 5, 5), (5, 5, 6), (5, 5, 7), (5, 5, 8), (5, 5, 9), (5, 6, 6), (5, 6, 7), (5, 6, 8), (5, 6, 9), (5, 7, 7), (5, 7, 8), (5, 7, 9), (5, 8, 8), (5, 8, 9), (5, 9, 9), (6, 6, 6), (6, 6, 7), (6, 6, 8), (6, 6, 9), (6, 7, 7), (6, 7, 8), (6, 7, 9), (6, 8, 8), (6, 8, 9), (6, 9, 9), (7, 7, 7), (7, 7, 8), (7, 7, 9), (7, 8, 8), (7, 8, 9), (7, 9, 9), (8, 8, 8), (8, 8, 9), (8, 9, 9), (9, 9, 9)]