Peter Otten wrote: > This is not as efficient as it should be -- the gaps are calculated twice, > the check for the first and the last position is repeated on every > iteration lots of packing and unpacking... --
To address some of my own criticism: def lonely(triple): left, value, right = triple return left and right def grouped(values): a, b, mid = tee(values, 3) gaps = (y - x != 1 for x, y in zip(a, islice(b, 1, None))) left, right = tee(gaps) triples = zip( chain([True], left), mid, chain(right, [True]) ) for key, group in groupby(triples, lonely): yield key, (value for left, value, right in group) > either groupby() is the > wrong tool or I'm holding it wrong ;) Most certainly still true. -- https://mail.python.org/mailman/listinfo/python-list