Split a string in equal parts (grouper in Python)
Grouper recipe is an extended toolset made using an existing itertool as building blocks. It collects data into fixed-length chunks or blocks. Existing Itertools Used: izip_longest(*iterables[, fillvalue]) : Make an iterator that aggregates elements from each of the iterables. If the iterables are of uneven length, missing values are filled-in with fillvalue. Iteration continues until the longest iterable is exhausted. Performance:
- The extended tools offer the same high performance as the underlying toolset.
- The superior memory performance is kept by processing elements one at a time rather than bringing the whole iterable into memory all at once.
- Code volume is kept small by linking the tools together in a functional style which helps eliminate temporary variables.
- High speed is retained by preferring “vectorized” building blocks over the use of for-loops and generators which incur interpreter overhead.
Input : str = ABCDEFG, l = 3
Output : ABC DEF Gxx
Grouping characters of string in set of 3: ABC DEF Gxx.
'x' is added to the set which doesn't have 3 elements in it.
Input : str = GEEKSFORGEEKS, l = 5
Output : GEEKS FORGE EKSxx
Below is the Python3 code :
grouper(iterable, n, fillvalue
ABC DEF Gxx
The time complexity and auxiliary space of the above code are:
Time complexity: O(n), where n is the length of the input iterable.