Iterating over range(len(collection)) is one of the worst anti-patterns in Python. I take great pains to slap my students who do that.
On Feb 17, 2017 9:32 AM, "Mikhail V" <mikhail...@gmail.com> wrote: > > 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/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/