尽管我进行了研究,但我没有找到解决我的问题的方法。感谢您的帮助 !

设a和b,两个整数。无论这两个整数之间的长度如何,我都想生成整数的所有子区间。

比如设a=2,b=5,我尝试得到的结果是:

[
 [[2],[3],[4],[5]
 [[2,5]],
 [[2],[3,5]],
 [[2],[3,4],[5]],
 [[2],[3],[4,5]],
 [[2,3],[4,5]],
 [[2,3],[4],[5]],
 [[2,4],[5]]
]

感谢您的帮助,

此致 !

最佳答案

您可以使用从最接近 a 的数字(即 a 本身)到 b 生成区间的函数,然后递归生成从 a + 1b 的区间:

def intervals(a, b):
    if a > b:
        yield []
    for i in range(a, b + 1):
        for interval in intervals(i + 1, b):
            yield [[a] if a == i else [a, i], *interval]

以便:
list(intervals(2, 5))

返回:
[[[2], [3], [4], [5]],
 [[2], [3], [4, 5]],
 [[2], [3, 4], [5]],
 [[2], [3, 5]],
 [[2, 3], [4], [5]],
 [[2, 3], [4, 5]],
 [[2, 4], [5]],
 [[2, 5]]]

关于python - 生成所有可能的整数区间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54883255/

10-15 08:50