data_structures.arrays.pairwise_iteration¶
Author : Matheus F. Vesco Date : October 3, 2023
Implementation of pairwise iteration algorithms, which can be useful in many domains. Currently, there are two different implementations.
Functions¶
Generate pairs of elements from an iterable with a given step size. |
|
|
Generate pairs of elements from an iterable just like: |
Module Contents¶
- data_structures.arrays.pairwise_iteration.pairwise_iteration_comprehension(iterable: collections.abc.Iterable, step: int = 1) collections.abc.Iterator[tuple]¶
Generate pairs of elements from an iterable with a given step size.
This function uses list comprehensions to get the items that are step distance from each other and later the iter() conversion to create two independent list iterators (a and b) from the input iterable. The next function is used to offset the b iterator by one index, and then the two iterators are zipped together to create pairs of elements.
- Args:
iterable (Iterable): The input iterable. step (int, optional): The step size for iterating through the input iterable. Defaults to 1.
- Yields:
Iterator[Tuple]: An iterator that yields pairs of objects.
- Examples:
>>> list(pairwise_iteration_comprehension([0, 1, 2, 3, 4, 5, 6], step=2)) [(0, 2), (2, 4), (4, 6)]
>>> list(pairwise_iteration_comprehension([0, 1, 2, 3, 4, 5, 6], step=3)) [(0, 3), (3, 6)]
>>> list(pairwise_iteration_comprehension((0, 1, 2, 3, 4), step=2)) [(0, 2), (2, 4)]
>>> python_set = pairwise_iteration_comprehension( ... {4, 3, 2, 1, 0}, step=2) >>> list(python_set) # sets are unordered [(0, 2), (2, 4)]
>>> dictionary = pairwise_iteration_comprehension( ... {'x1':4, 'y1':5, 'x2':1, 'y2':'a', 'spam':7}, step=2) >>> list(dictionary) [('x1', 'x2'), ('x2', 'spam')]
>>> list(pairwise_iteration_comprehension({0, 1, 2, 3, 4, 5, 6}, step=3)) [(0, 3), (3, 6)]
>>> list(pairwise_iteration_comprehension(['ATG','GCT','TGC','TAA'])) [('ATG', 'GCT'), ('GCT', 'TGC'), ('TGC', 'TAA')]
>>> list(pairwise_iteration_comprehension(['a'], step=1)) []
- data_structures.arrays.pairwise_iteration.pairwise_iteration_tee(iterable: collections.abc.Iterable) collections.abc.Iterator[tuple]¶
Generate pairs of elements from an iterable just like: https://docs.python.org/3/library/itertools.html#itertools.pairwise
This function uses the tee function from the itertools module to create two independent iterators (a and b) from the input iterable. The next function is used to offset the b iterator by one index, and then the two iterators are zipped together to create pairs of elements. This implementation should work with any iterable in Python.
- Args:
iterable (Iterable): The input iterable.
- Yields:
Iterator[Tuple]: An iterator that yields pairs of objects.
- Examples:
>>> list(pairwise_iteration_tee([1, 2, 3])) [(1, 2), (2, 3)]
>>> list(pairwise_iteration_tee((4, 3, 5))) [(4, 3), (3, 5)]
>>> list(pairwise_iteration_tee({'x':3, 'y':1, 'z':2, 'foo':4})) [('x', 'y'), ('y', 'z'), ('z', 'foo')]
>>> list(pairwise_iteration_tee('2345')) [('2', '3'), ('3', '4'), ('4', '5')]
>>> list(pairwise_iteration_tee(['ATG','GCT','TGC','TAA'])) [('ATG', 'GCT'), ('GCT', 'TGC'), ('TGC', 'TAA')]
>>> list(pairwise_iteration_tee(['a'])) []
>>> from itertools import pairwise >>> all(list(pairwise_iteration_tee(test)) == list(pairwise(test)) ... for test in ( ... [1, 2, 3], ... (4, 3, 5), ... {'x':3, 'y':1, 'z':2, 'foo':4}, ... '2345', ... ['ATG','GCT','TGC','TAA'], ... [], ... )) True