[Python-Dev] PEP 246: lossless and stateless
Phillip J. Eby
pje at telecommunity.com
Sat Jan 15 18:06:36 CET 2005
At 05:32 PM 1/15/05 +0100, Just van Rossum wrote:
>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.
More information about the Python-Dev
mailing list