Phillip J. Eby wrote:
> >It's not at all clear to me that "sticky" behavior is the best > >default behavior, even with implicit adoptation. Would anyone in > >their right mind expect the following to return [0, 1, 2, 3, 4, 5] > >instead of [0, 1, 2, 0, 1, 2]? > > > > >>> from itertools import * > > >>> seq = range(10) > > >>> list(chain(islice(seq, 3), islice(seq, 3))) > > [0, 1, 2, 0, 1, 2] > > >>> > > I don't understand why you think it would. What does islice have to > do with adaptation?
islice() takes an iterator, yet I give it a sequence.
No, it takes an *iterable*, both practically and according to its documentation:
>>> help(itertools.islice) Help on class islice in module itertools:
class islice(__builtin__.object) | islice(iterable, [start,] stop [, step]) --> islice object | | ... [snip rest]
If you think about the iterator and iterable protocols a bit, you'll see that normally the adaptation goes the *other* way: you can pass an iterator to something that expects an iterable, as long as it doesn't need reiterability.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com