August 2018
Intermediate to advanced
366 pages
10h 14m
English
The core of the function here is provided by itertools.groupby.
This function moves the iterator forward, grabs the item, and adds it to the current group. When an item with a different key is faced, a new group is created.
So, in fact, it will only group nearby entries that share the same key:
>>> sample = [1, 2, 1, 1] >>> [(k, list(g)) for k,g in itertools.groupby(sample)] [(1, [1]), (2, [2]), (1, [1, 1])]
As you can see, there are three groups instead of the expected two, because the first group of 1 is immediately interrupted by number 2, and so we end up with two different groups of 1.
We sort the elements before grouping them, the reason being that sorting ensures that equal elements are all near to one another:
>>> ...