尽管我的研究,我找不到解决我的问题。谢谢您的帮助 !
设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
本身)到qazxswpoi的数字的区间,然后递归地产生从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]]]
如果需要,我会添加一个解释。