John Salerno schreef: > I'm reading Text Processing in Python right now and I came across a > comment that is helping me to see for loops in a new light. I think > because I'm used to the C-style for loop where you create a counter > within the loop declaration, for loops have always seemed to me to be > about doing something a certain number of times, and not about iterating > over an object. > > The reason for this distinction comes from the fact that I read a lot > how using range and for is somewhat discouraged, because it doesn't > really use a for loop for it's true purpose. So my question is, is this > just a Python-oriented opinion about for loops, or is it a general idea? > > Also, what if you *do* need to just do something a set number of times. > Is this okay, or does it mean you are approaching the problem > incorrectly? Using for and range together seems to be a common idiom, > yet at the same time discouraged, so I'm wondering what is a good balance.
I felt more or less the same when I first learned Python; I was also used to C-style loops, coming from a C/C++ background. In the end though, it turned out to be a non-issue for me. In many cases loops really are for iterating over sequences; more so than I realized when using for loops in C or C++. In these cases, Python's for statement works better than C-style loops. And if you really need to do something a certain number of times, there's still range() or xrange() to do it. It's quite simple, I think: - You have a sequence or iterator to loop over? Use for x in sequence. - You want something done a set number of times? Use for i in range(). - You want to loop over a sequence and also need the index? Use for i, x in enumerate(sequence). -- If I have been able to see further, it was only because I stood on the shoulders of giants. -- Isaac Newton Roel Schroeven -- http://mail.python.org/mailman/listinfo/python-list