Skip to content Skip to sidebar Skip to footer

Xrange Versus Itertools.count Python 2.7

I want to run a range from a start to an end value. It works fine on low numbers but when it gets too large it causes an overflow error as int too large to convert to C Long. I am

Solution 1:

You can use itertools.islice() to give count an end:

from itertools import count, islice

for i in islice(count(start_value), end_value - start_value):

islice() raises StopIteration after end_value - start_value values have been iterated over.

Supporting a step size other than 1 and putting it all together in a function would be:

from itertools import count, islice

def irange(start, stop=None, step=1):
    if stop isNone:
        start, stop =0, start
    length =0
    if step >0andstart< stop:
        length =1+ (stop -1-start) // step
    elif step <0andstart> stop:
        length =1+ (start-1- stop) //-step
    return islice(count(start, step), length)

then use irange() like you'd use range() or xrange(), except you can now use Python long integers:

>>>import sys>>>for i in irange(sys.maxint, sys.maxint + 10, 3):...print i... 
9223372036854775807
9223372036854775810
9223372036854775813
9223372036854775816

Post a Comment for "Xrange Versus Itertools.count Python 2.7"