[Python-ideas] More classical for-loop

Mikhail V mikhailwas at gmail.com
Fri Feb 17 12:31:19 EST 2017


On 17 February 2017 at 17:37, Chris Angelico <rosuav at gmail.com> wrote:

> On Sat, Feb 18, 2017 at 3:30 AM, Mikhail V <mikhailwas at gmail.com> wrote:
> > On 17 February 2017 at 04:59, Chris Angelico <rosuav at gmail.com> wrote:
> >>
> >> On Fri, Feb 17, 2017 at 2:13 PM, Mikhail V <mikhailwas at gmail.com>
> wrote:
> >> > Common use case:
> >> >
> >> > L = [1,3,5,7]
> >> >
> >> > for i over len(L):
> >> >    e = L[i]
> >> >
> >> > or:
> >> >
> >> > length = len(L)
> >> > for i over length:
> >> >    e = L[i]
> >>
> >> Better use case:
> >>
> >> for i, e in enumerate(L):
> >>
> >
> > This would be more compact, yet less readable, more error prone variant.
> > I'd avoid it it all costs and even if I don't need the index further in
> loop
> > body,
> > (which happens rarely in my experience) I write e=L[i] in second line
> > to make the code more verbose and keep the flow order.
> > So your variant (and those proposed in PEP-212) could serve in list
> > comprehensions for example, but for common 'expanded' code  I find it
> > decline of readability, and creating totally different variants for same
> > iteration idea.
> > But partially that could be simply matter of habit and love to
> contractions.
>
> If you don't need the index, why not just iterate over the list directly?
>
> for e in L:
>
> That's the single most obvious way to step through a collection in
> Python. What do you need to count up to the length for?
>
>
I have said I need the index, probably you've misread my last comment.
Further more I explained why I think iteration over index should be the
preferred way, it help with readability a lot.
All my learning years ended up with rewriting most code to "for i in
range()"
and I slap myself when I start to write "for e in L".
It is exactly where TOOWTDI applies perfectly and it is integer iteration
for me.

Mikhail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170217/1d4ef387/attachment.html>


More information about the Python-ideas mailing list