Raymond Hettinger wrote: > [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:
Not secretly... > def lastdetecter(iterable): > it = iter(iterable) > value = it.next() > for nextvalue in it: > yield (False, value) > value = nextvalue > yield (True, value) as that's what I posted above... > def lastdetecter(iterable): > "fast iterator algebra" > lookahead, t = tee(iterable) # make it cope with zero-length iterables lookahead = islice(lookahead, 1, None) > return chain(izip(repeat(False), imap(itemgetter(1), > izip(lookahead, t))), izip(repeat(True),t)) and that's the "somebody call the doctor -- now!" version ;) Peter -- http://mail.python.org/mailman/listinfo/python-list