Here one way of doing it which returns a tuple of bool, item, the bool is True if its the last item.
items = range(3) def iter_is_last(items): iterable = iter(items) previous = next(iterable) for last in iterable: yield False, previous previous = last yield True, last for is_last, item in iter_is_last(items): if is_last: print(f'Last item is {item}') else: print(f'Item is {item}')
Output:Item is 0
Item is 1
Last item is 2