Python's documentation includes 2 source codes for alternate xrange implementations, which, at least in my tests, give unexpected results.
# from file:///usr/share/doc/python2.6-doc/html/library/functions.html#xrange
takewhile(lambda x:x<stop, (start+i*step for i in count()))
and:
# from: http://docs.python.org/library/functions.html?highlight=xrange#xrange
islice(count(start, step), (stop-start+step-1)//step)
I'll attach a file with source code showing that, and propose 3 different versions which seems to work fine. (I've prefer the first one, but python lacks of sign() function). |