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