On 11/25/2014 03:31 PM, Chris Angelico wrote:
On Wed, Nov 26, 2014 at 8:56 AM,
wrote: For something more concrete, we can consider a naive implementation of iteration over adjacent pairs:
def pairs(x): i = iter(x) while True: yield next(i), next(i)
Okay, it's simple and naive. How about this version:
def pairs(x): i = iter(x) for val in i: yield val, next(i)
Also simple, but subtly different from your version. What's the difference? Will it be obvious to everyone who reads it?
I don't see the difference being subtle enough -- if an odd number of items is tossed in, that `next(i)` is still going to raise a StopIteration, which under PEP 479 will become a RunTimeError. Or did you mean that even numbered iterators will work fine, but odd-numbered ones will still raise? Nice. :) -- ~Ethan~