[Python-Dev] PEP 279
Aahz
aahz@pythoncraft.com
Thu, 28 Mar 2002 17:06:25 -0500
On Thu, Mar 28, 2002, Guido van Rossum wrote:
>
> Very confusing. I propose to remove the start/stop arguments, *or*
> change the spec to:
>
> def iterindexed(sequence, start=0, stop=None):
> i = start
> while stop is None or i < stop:
> try:
> item = sequence[i]
> except IndexError:
> break
> yield (i, item)
> i += 1
>
> This reduces the validity to only sequences (as opposed to all
> iterable collections), but has the advantage of making
> iterindexed(x, i, j) iterate over x[i:j] while reporting the index
> sequence range(i, j) -- not so easy otherwise.
>
> The simplified version is still attractive because it allows
> arbitrary iterators to be passed in:
>
> def iterindexed(collection):
> i = 0
> it = iter(collection)
> while 1:
> yield (i, it.next())
> i += 1
How about doing it both ways: if you try to pass start/stop for an
iterator instead of a sequence, you get an AttributeError on
__getindex__. (I'm not proposing this, just throwing it out as an
idea. It does make explaining it more difficult, which is an argument
against.)
--
Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/
Why is this newsgroup different from all other newsgroups?