-3

如何使某些帧范围(即 1-100)分成 4 个相等的帧范围(如 1-25、26-50、51-75、75-100 或任何类似的)。我需要每个分块帧范围的第一个和最后一个数字。

4

1 回答 1

4
def chunk_range(first, last, howmany):
    size = ((last - first + 1) + (howmany - 1)) // howmany
    while first <= last:
        next = first + size
        yield first, min(next - 1, last)
        first = next

list(chunk_range(1, 100, 4))

返回

[(1, 25), (26, 50), (51, 75), (76, 100)]

请注意,这会使除最后一个段之外的所有段长度相等 - 例如,

list(chunk_range(1, 7, 3))

给你

[(1, 3), (4, 6), (7, 7)]   # last chunk is only one item

相反,您可能希望沿序列分布错误,这是一种布雷森汉姆算法。

于 2012-09-11T13:46:13.577 回答