12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from typing import Iterable, Tuple, TypeVar
- T = TypeVar("T")
- def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
- """Iterate and generate a tuple with a flag for first value."""
- iter_values = iter(values)
- try:
- value = next(iter_values)
- except StopIteration:
- return
- yield True, value
- for value in iter_values:
- yield False, value
- def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
- """Iterate and generate a tuple with a flag for last value."""
- iter_values = iter(values)
- try:
- previous_value = next(iter_values)
- except StopIteration:
- return
- for value in iter_values:
- yield False, previous_value
- previous_value = value
- yield True, previous_value
- def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
- """Iterate and generate a tuple with a flag for first and last value."""
- iter_values = iter(values)
- try:
- previous_value = next(iter_values)
- except StopIteration:
- return
- first = True
- for value in iter_values:
- yield first, False, previous_value
- first = False
- previous_value = value
- yield first, True, previous_value
|