Should you always favor xrange() over range()?

后端 未结 12 2125
后悔当初
后悔当初 2020-11-22 13:36

Why or why not?

12条回答
  •  萌比男神i
    2020-11-22 14:22

    • range(): range(1, 10) returns a list from 1 to 10 numbers & hold whole list in memory.
    • xrange(): Like range(), but instead of returning a list, returns an object that generates the numbers in the range on demand. For looping, this is lightly faster than range() and more memory efficient. xrange() object like an iterator and generates the numbers on demand (Lazy Evaluation).
    In [1]: range(1,10)
    Out[1]: [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    In [2]: xrange(10)
    Out[2]: xrange(10)
    
    In [3]: print xrange.__doc__
    Out[3]: xrange([start,] stop[, step]) -> xrange object
    

    range() does the same thing as xrange() used to do in Python 3 and there is not term xrange() exist in Python 3. range() can actually be faster in some scenario if you iterating over the same sequence multiple times. xrange() has to reconstruct the integer object every time, but range() will have real integer objects.

提交回复
热议问题