How to find all groups in a list in python?

I have a list like this

[0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1] 

and I want to group them, and then find the length of each group. So, the result will be like this:

 [[2,0],[3,1].....[4,1]] 
+4
source share
2 answers

Use itertools.groupby :

 >>> import itertools >>> l = [0,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1] >>> [(len(list(g)), k) for k,g in itertools.groupby(l)] [(2, 0), (3, 1), (3, 0), (2, 1), (2, 0), (4, 1)] 
+8
source
 In [7]: import itertools In [8]: [[sum(1 for _ in g),v] for v,g in itertools.groupby(l)] Out[8]: [[2, 0], [3, 1], [3, 0], [2, 1], [2, 0], [4, 1]] 

Where l is your input list.

+2
source

All Articles