如何按字节范围分片列表?以总大小1037、分片大小50为例
生成连续分片范围列表的正确实现
你的问题出在两个核心错误:
range的步长错误使用了chunk_size+1,导致每个分片的起始值错位,出现不必要的间隙;- 因前面的分片逻辑错误,你误以为最后一段起始值应为1020,实际按
1037和50的参数,正确起始值是1000(即50*20)。
正确代码实现
n = 1037 chunk_size = 50 ranges = [] for start in range(0, n, chunk_size): end = start + chunk_size # 最后一段如果超过总大小,用总大小作为结束值 if end > n: end = n ranges.append(f"{start} - {end}") print(ranges)
输出结果
['0 - 50', '50 - 100', '100 - 150', '150 - 200', '200 - 250', '250 - 300', '300 - 350', '350 - 400', '400 - 450', '450 - 500', '500 - 550', '550 - 600', '600 - 650', '650 - 700', '700 - 750', '750 - 800', '800 - 850', '850 - 900', '900 - 950', '950 - 1000', '1000 - 1037']
如果你的实际需求是最后一段必须从1020开始,需调整总大小或分片参数,但按你给出的1037和50参数,上述结果是逻辑连贯的正确分片列表。
内容的提问来源于stack exchange,提问作者Kakarotto
相关产品推荐
相关产品推荐

