Last iteration?

Peter Otten __peter__ at web.de
Fri Oct 12 09:25:28 EDT 2007


Diez B. Roggisch wrote:

> Florian Lindner wrote:

>> can I determine somehow if the iteration on a list of values is the
>> last iteration?

>  def last_iter(iterable):
>     it = iter(iterable)
>     buffer = [it.next()]
>     for i in it:
>         buffer.append(i)
>         old, buffer = buffer[0], buffer[1:]
>         yield False, old
>     yield True, buffer[0]

This can be simplified a bit since you never have to remember more than on
item:

>>> def mark_last(items):
...     items = iter(items)
...     last = items.next()
...     for item in items:
...             yield False, last
...             last = item
...     yield True, last
...
>>> list(mark_last([]))
[]
>>> list(mark_last([1]))
[(True, 1)]
>>> list(mark_last([1,2]))
[(False, 1), (True, 2)]

Peter



More information about the Python-list mailing list