efficiency of range() and xrange() in for loops
Georg Brandl
g.brandl-nospam at gmx.net
Wed Apr 5 18:59:01 EDT 2006
Alan Morgan wrote:
> In article <teXYf.69673$A83.1673324 at twister1.libero.it>,
> Giovanni Bajo <noway at sorry.com> wrote:
>>Steve R. Hastings wrote:
>>
>>>> in Python 2.X, range is defined to return a list. if you start
>>>> returning something else, you'll break stuff.
>>>
>>> Perhaps I'm mistaken here, but I don't see how this optimization could
>>> possibly break anything.
>>
>>Because you assume that the only use-case of range() is within a for-loop.
>>range() is a builtin function that can be used in any Python expression. For
>>instance:
>>
>>RED, GREEN, BLUE, WHITE, BLACK = range(5)
>
> Hmmm, this worked fine when I used xrange as well. Am I missing something?
> Obviously there *are* differences, viz:
Just _look_ at the objects:
>>> range(5)
[0, 1, 2, 3, 4]
>>> xrange(5)
xrange(5)
>>>
range is giving you a real list, while xrange is giving you an xrange object.
Have you tried to slice an xrange object? Or using .append on it?
Georg
More information about the Python-list
mailing list