[Python-ideas] More classical for-loop

Abe Dillon abedillon at gmail.com
Fri Feb 17 13:19:23 EST 2017


>
> Further more I explained why I think iteration over index should be the
> preferred way, it help with readability a lot.


I think you'll find this statement at odds with most of the Python
community, especially Guido. I find looping over objects in a collection is
what you want to do 90% of the time so adding an extra step just adds noise.

I find that most people who prefer looping over indexes do so because they
are more familiar with languages like C, not because it is inherently more
readable. Being more comfortable with a worse way of doing something isn't
a good justification for changing the language.

On Fri, Feb 17, 2017 at 11:31 AM, Mikhail V <mikhailwas at gmail.com> wrote:

>
> 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
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170217/93a3c6ef/attachment.html>


More information about the Python-ideas mailing list