Is using range() in for loops really Pythonic?

Matt Nordhoff mnordhoff at mattnordhoff.com
Sat May 10 22:34:59 EDT 2008


John Salerno wrote:
> I know it's popular and very handy, but I'm curious if there are purists
> out there who think that using something like:
> 
> for x in range(10):
>     #do something 10 times
> 
> is unPythonic. The reason I ask is because the structure of the for loop
> seems to be for iterating through a sequence. It seems somewhat
> artificial to use the for loop to do something a certain number of
> times, like above.
> 
> Anyone out there refuse to use it this way, or is it just impossible to
> avoid?

Well, you should use "xrange(10)" instead of "range(10)". While range()
returns a list of every single number, xrange() returns an iterable
object that only generates them on-demand, so xrange(1) and
xrange(sys.maxint) will use the same amount of RAM.

(Not that it matters when it's only 10 items, of course.)

Other than that, "for i in xrange(10)" is a standard Python idiom, even
though it is a bit weird.
-- 



More information about the Python-list mailing list