python - 动态嵌套循环-递归

标签 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并且它不适合我的目的,因为我必须稍后删除不必要的组合。

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

谢谢

最佳答案

您需要itertools.combinations_with_replacement()

>>> 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)]

关于python - 动态嵌套循环-递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59550304/

相关文章:

python - Plotly strip 图 : avoid spacing between colors in px. strip

javascript - 如何在javascript中遍历对象中的所有对象

arrays - 如何在查询嵌套对象/数组时使用 "wildcard"或 "regexp"

javascript - JavaScript 中的 For 循环 - 彩票网站

java - 如何根据div中的其他元素编写嵌套的xpath xpression?

vue.js - 过滤嵌套(递归)数据(Vue 2)

python - 闪烁的 Tkinter 标签

python - 如何从 Python 脚本捕获 Python 解释器和/或 CMD.EXE 输出?

python - 如何让 Python 3.7 使用超过 2 GB 的内存? (64位设置)

python将项目添加到列表并在获得空值时停止