python - 生成每个可能的整数区间

标签 python python-3.x list integer intervals

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

设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/

相关文章:

python - 通过将每列的宽度定义为字符数来读取 python pandas 中的数据

python - Flask_restplus 没有生成正确的 Swagger UI

python - Python从 `file.read()`判断 `file`结果的类型

python - 已安装 Html 测试运行程序,但显示错误 "ModuleNotFoundError: No module named ' HtmlTestRunner' "

python - 如何根据相关值获得最大项目?

Python 迭代器追加逻辑

python - 不同的功能,相同的结果

python - 添加 [别名] 失败,错误为 : invalid command 'xyz'

java - 将 List<double[][]> 折叠为 double[][]

java - 查找连续的数字?