On Wed, Sep 30, 2015 at 05:19:53PM +0000, Neil Girdhar wrote:
I guess, I'm just asking for enumerate to go through the same change that range went through. Why wasn't it a problem for range?
There is a pernicious myth that (x)range is an iterator. It is not. It is a sequence, but one where the items are calculated on demand rather than pre-populated into some large data structure (a list or array).
This is not just a matter of labels. It is a matter of the actual behaviour. (x)range objects don't behave like iterators except in the simplest sense that you can iterate over them.
So your question is based on false assumptions -- range didn't go through any such change. In Python 2, range was eager and xrange lazy, but both are sequences, and in Python 3 the eager version is gone and the lazy version renamed without the "x" prefix.