Spaces:
Sleeping
Sleeping
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 | |