将具有非连续整数的数组拆分为每个具有连续整数的数组

问题描述 投票:0回答:1

我在 python 中有一个数组,其中包含数百个我想要分区的元素。我们以下面的数组为例:[1,2,3,7,8,9,10,11,14],我想拆分成如下数组: [1,2,3], [7,8,9,10,11], [14],想法是在每个数组中数字是连续的。有没有一种优雅的方式来做到这一点?

我还没有尝试过任何东西,我可以写一个 for 循环。

python numpy numpy-ndarray
1个回答
0
投票

您可以使用 itertools 中的 groupby 使用数字及其位置之间的差异来形成组。连续的数字将具有相同的差异,因此它们将在同一组中结束。

from itertools import groupby

a = [1,2,3,7,8,9,10,11,14]

group = (n-i for i,n in enumerate(a))
b     = [g for _,(*g,) in groupby(a,lambda _:next(group))]    

print(b)
[[1, 2, 3], [7, 8, 9, 10, 11], [14]]
© www.soinside.com 2019 - 2024. All rights reserved.