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"