我在 python 中有一个数组,其中包含数百个我想要分区的元素。我们以下面的数组为例:[1,2,3,7,8,9,10,11,14],我想拆分成如下数组: [1,2,3], [7,8,9,10,11], [14],想法是在每个数组中数字是连续的。有没有一种优雅的方式来做到这一点?
我还没有尝试过任何东西,我可以写一个 for 循环。
您可以使用 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]]