Range() limit
Magnus Lie Hetland
mlh at furu.idi.ntnu.no
Mon Feb 24 21:22:07 EST 2003
In article <mailman.1046124223.31565.python-list at python.org>, Chad Netzer wrote:
>On Fri, 2003-02-21 at 19:45, Magnus Lie Hetland wrote:
>
>> That's good advice, of course, but won't really help. Once the limit
>> exceets the integer range (and, thus, is a long) xrange will no longer
>> work (for some reason I don't really understand -- why must xrange use
>> ints?)
>
>It is implemented with a C structure that uses C long's as the
>variables. It simply can't handle arbitrarily large numbers. And
>simply changing it to do so would slow down the common case, so people
>haven't done it.
>
>I'm actually going to be submitting patches to 2.3 which change this
>behavior for range(), and I'm working on an acceptable solution for
>xrange(). Also, there is a possibility that an xrange()-like generator
>or iterator will be added to the standard distribution at some point.
I thought perhaps the following would work, but, alas, no...
from itertools import islice, count
for i in islice(count(), 10**10):
do_something(i)
here, too, the requirement is that i remains an int. But with this
amount of code, it's just as easy to implement it yourself, of course.
>But, thanks for the added data point. I was not sure I could convince
>the BDFL that this issue was anything more than a very occasional
>quibble; and yet I've seen several others remark on the inconsistency,
>and working with numerics and graphics, it has bitten me a few times.
Yup. It will me interesting to see how your patch turns out.
>In short, I have 'range(1e20, 1e21, 1e19)' working and hope to have
>xrange() doing the same (all with NO performance penalty to the
>non-long-int common case)
Great :)
--
Magnus Lie Hetland "Nothing shocks me. I'm a scientist."
http://hetland.org -- Indiana Jones
More information about the Python-list
mailing list