[Diez B. Roggisch] > > out:) But I wanted a general purpose based solution to be available that > > doesn't count on len() working on an arbitrary iterable.
[Peter Otten] > You show signs of a severe case of morbus itertools. > I, too, am affected and have not yet fully recovered... Maybe you guys were secretly yearning for a magical last element detector used like this: for islast, value in lastdetecter([1,2,3]): if islast: print 'Last', value else: print value Perhaps it could be written plainly using generators: def lastdetecter(iterable): it = iter(iterable) value = it.next() for nextvalue in it: yield (False, value) value = nextvalue yield (True, value) Or for those affected by "morbus itertools", a more arcane incantation would be preferred: from itertools import tee, chain, izip, imap from operator import itemgetter def lastdetecter(iterable): "fast iterator algebra" lookahead, t = tee(iterable) lookahead.next() t = iter(t) return chain(izip(repeat(False), imap(itemgetter(1), izip(lookahead, t))), izip(repeat(True),t)) Raymond -- http://mail.python.org/mailman/listinfo/python-list