On Tue, 13 Oct 2009 16:17:58 -0500, Peng Yu wrote: > Hi, > > The following code does not run because range() does not accept a big > number.
Incorrect. >>> range(sys.maxint+2, sys.maxint+5) [2147483649L, 2147483650L, 2147483651L] > Is there a way to make the code work. I'm wondering if there is > a way to write a for-loop in python similar to that of C style. > > for(int i = 0; i < a_big_number; ++ i) An exact translation of that would be a while loop: i = 0 while i < a_big_number: i += 1 but that's not actually your problem. Your actual problem is that you're trying to generate a list containing 2147483647 (sys.maxint) items. Each item requires 8 bytes, so this will need a single contiguous block of at least 16 gigabytes. On my system, when I try it, I get MemoryError. You get OverflowError. Try instead using a lazy list: >>> xrange(sys.maxint) xrange(2147483647) > def foo(): > for i in range(sys.maxint): > if i % 100 == 0: > print i Rather than iterating through every single integer between 0 and 2147483647, you can skip the ones you don't care about: for i in xrange(0, sys.maxint, 100): print i This will run approximately 100 times faster than your code. -- Steven -- http://mail.python.org/mailman/listinfo/python-list