Not really. "range" returns a list, "xrange" returns an iterator. I assume that the list is much easier to reason about in a JIT. In python3, range is a type of its own and certainly more useful for in a JIT.
How is allocating and populating a Python list order to do a simple for loop in a tight inner loop not problematic? Neither CPython nor PyPy can optimize that out.
Based on the description in the docs (http://pythonhosted.org/hope/lang.html#loops), my guess is that "for i in range(N)" is directly translated into something like "for (i = 0; i < N; i++)" in the C++.
https://docs.python.org/3/library/stdtypes.html#typesseq-ran...
https://docs.python.org/2/library/functions.html#range