pyiter.merging
1from typing import Callable, Iterable, Iterator 2from .transform import Transform, T, O, U 3 4 5# Zipping ? 6class MergingTransform(Transform[T, U]): 7 """ 8 Merges two iterables into a single iterable by applying a transformation function to each pair of elements. 9 """ 10 11 def __init__( 12 self, 13 iter: Iterable[T], 14 other_iter: Iterable[O], 15 transform: Callable[[T, O], U] = lambda a, b: (a, b), 16 ): 17 super().__init__(iter) 18 self.other_iter = other_iter 19 self.transform = transform 20 21 def __do_iter__(self) -> Iterator[U]: 22 iter1 = iter(self.iter) 23 iter2 = iter(self.other_iter) 24 while True: 25 try: 26 yield self.transform(next(iter1), next(iter2)) 27 except StopIteration: 28 break
7class MergingTransform(Transform[T, U]): 8 """ 9 Merges two iterables into a single iterable by applying a transformation function to each pair of elements. 10 """ 11 12 def __init__( 13 self, 14 iter: Iterable[T], 15 other_iter: Iterable[O], 16 transform: Callable[[T, O], U] = lambda a, b: (a, b), 17 ): 18 super().__init__(iter) 19 self.other_iter = other_iter 20 self.transform = transform 21 22 def __do_iter__(self) -> Iterator[U]: 23 iter1 = iter(self.iter) 24 iter2 = iter(self.other_iter) 25 while True: 26 try: 27 yield self.transform(next(iter1), next(iter2)) 28 except StopIteration: 29 break
Merges two iterables into a single iterable by applying a transformation function to each pair of elements.