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

> On Sat, Feb 18, 2017 at 3:30 AM, Mikhail V <mikhail...@gmail.com> wrote:
> > On 17 February 2017 at 04:59, Chris Angelico <ros...@gmail.com> wrote:
> >>
> >> On Fri, Feb 17, 2017 at 2:13 PM, Mikhail V <mikhail...@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
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to