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/