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