生成每个可能的整数间隔

问题描述 投票:3回答:2

尽管我的研究,我找不到解决我的问题。谢谢您的帮助 !

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

谢谢您的帮助,

最好的祝福 !

python python-3.x list integer intervals
2个回答
3
投票

你可以使用一个函数,它产生从最接近aa本身)到q​​azxswpoi的数字的区间,然后递归地产生从ba + 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))

1
投票

我写了一个方法来做你要求的。看起来不是很漂亮,但它确实起到了作用。

[[[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]]]

如果需要,我会添加一个解释。

© www.soinside.com 2019 - 2024. All rights reserved.