给出以下列表:

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), 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]


如果需要,可以跳过最后一个元素,但要视您的要求而定。

关于python - 分块列表,包括重叠间隔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58304141/

10-11 06:13