On 31 August 2013 23:08, Chris Angelico <ros...@gmail.com> wrote: > On Sun, Sep 1, 2013 at 1:43 AM, Oscar Benjamin > <oscar.j.benja...@gmail.com> wrote: >> On 31 August 2013 16:30, Chris Angelico <ros...@gmail.com> wrote: >>>> >>>> but doesn't solve all the cases (imagine a string or an iterator). >>> >>> Similar but maybe simpler, and copes with more arbitrary iterables: >>> >>> it=iter(range(5)) >>> print(next(it), end='') >>> for i in it: >>> print('',i, end='') >> >> If you want to work with arbitrary iterables then you'll want >> >> it = iter(iterable) >> try: >> val = next(it) >> except StopIteration: >> pass # Or raise or something? >> else: >> print(val, end='') >> for i in it: >> print('', i, end='') > > I went with this version: > > except StopIteration: > raise > > In other words, if it's going to bomb, let it bomb :)
I think the point is that StopIteration is an unsafe error to raise. -- http://mail.python.org/mailman/listinfo/python-list