Python 'for' loop is memory inefficient
MRAB
python at mrabarnett.plus.com
Sun Aug 16 16:00:27 EDT 2009
bartc wrote:
>
> "Steven D'Aprano" <steve at REMOVE-THIS-cybersource.com.au> wrote in
> message news:02969972$0$20647$c3e8da3 at news.astraweb.com...
>> On Fri, 14 Aug 2009 18:25:45 -0700, Dr. Phillip M. Feldman wrote:
>>
>>> It seems as though Python is actually expanding range(2,n) into a list
>>> of numbers, even though this is incredibly wasteful of memory. There
>>> should be a looping mechanism that generates the index variable values
>>> incrementally as they are needed.
>>
>>
>> Others have already pointed out to you that xrange() (for Python 2.x)
>> does what you want. In Python 3.x, the old range() is gone for good, and
>> xrange() renamed to just range().
>
> It does seem rather worrying that whoever originally thought up Python
> decided it would be a good idea to implement a simple 1 to N (or 0 to
> N-1) for-loop by first creating an array of N consecutive integers!
>
Whoever? I am shocked! ;-)
> They must have known Python was going to be slow anyway, but this
> wouldn't have helped the speed any. Nor the memory consumption.
>
> A for-loop, for iterating over a simple sequence, should be one of the
> fastest things in the language.
>
> [Presumably the internal code that created those consecutive integers
> used a more conventional looping method...]
>
More information about the Python-list
mailing list