尽管进行了研究,但仍未找到解决方案.谢谢您的帮助 !
设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(本身是)的数字到b的间隔,然后递归产生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]]]