我在python中有一个数组,里面有几百个元素,我想分区。让我们以下面的数组为例:[1,2,3,7,8,9,10,11,14],我想分成以下数组:[1,2,3],[7,8,9,10,11],[14],这个想法是在每个数组中的数字是连续的。有没有一种优雅的方法来做到这一点?我还没有尝试过任何东西,我可以写一个for循环。
nue99wik1#
from more_itertools import consecutive_groups a = [1,2,3,7,8,9,10,11,14] print(*map(list, consecutive_groups(a)))
ie3xauqp2#
你可以使用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]]
2条答案
按热度按时间nue99wik1#
ie3xauqp2#
你可以使用itertools中的groupby来根据数字和它们的位置之间的差异来分组。连续的数字将具有相同的差异,因此它们将最终在相同的组中。