Skip to main content
 首页 » 编程设计

python之包含重叠间隔的分块列表

2025年05月04日9zhwl

给定以下列表:

l1 = [0,1000,5000,10000,20000,30000,40000,50000] 

我知道我可以通过查看每一对连续的数字来创建它的 block :

def chunker(seq, size): 
    return (seq[pos:pos + size] for pos in range(0, len(seq), size)) 
 
for group in chunker(l1, 2): 
   print(group) 

返回:

[0, 1000] 
[5000, 10000] 
[20000, 30000] 
[40000, 50000] 

如何确保重叠间隔(例如 [1000,5000])也包括在内?

预期输出:

[0, 1000] 
[1000, 5000]  
[5000, 10000] 
[10000, 20000] 
[20000, 30000] 
[30000, 40000] 
[40000, 50000] 

请您参考如下方法:

您不必要地使用步长遍历范围。这样你就可以防止组在另一个组结束的地方开始。此代码应该有效:

l1 = [0,1000,5000,10000,20000,30000,40000,50000] 
 
def chunker(seq, size): 
    return (seq[pos:pos + size] for pos in range(0, len(seq))) 
 
for group in chunker(l1, 2): 
   print(group) 

输出是:

[0, 1000] 
[1000, 5000] 
[5000, 10000] 
[10000, 20000] 
[20000, 30000] 
[30000, 40000] 
[40000, 50000] 
[50000] 

如果您愿意,可以跳过最后一个元素,但这取决于您的要求。