尽管我进行了研究,但我没有找到解决我的问题的方法。感谢您的帮助 !
设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 + 1
到 b
的区间:
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/