On 4/13/05, Jim <[EMAIL PROTECTED]> wrote: > Hi all > > Is this the best way to preallocate a list of integers? > listName = range(0,length) >
the 0 is unnecessary; range(length) does the same thing. > What about non integers? > arr = [myobject() for i in range(length)] > I've just claimed in the newsgroup above that pre-allocating helps but I > might be getting confused with matlab ;) > > If I have a file with a floating point number on each line, what is the > best way of reading them into a list (or other ordered structure)? > > I was iterating with readline and appending to a list but it is taking ages. > I would profile your app to see that it's your append which is taking ages, but to preallocate a list of strings would look like: ["This is an average length string" for i in range(approx_length)] My guess is that it won't help to preallocate, but time it and let us know. A test to back my guess: import timeit, math def test1(): lst = [0 for i in range(100000)] for i in xrange(100000): lst[i] = math.sin(i) * i def test2(): lst = [] for i in xrange(100000): lst.append(math.sin(i) * i) t1 = timeit.Timer('test1()', 'from __main__ import test1') t2 = timeit.Timer('test2()', 'from __main__ import test2') print "time1: %f" % t1.timeit(100) print "time2: %f" % t2.timeit(100) 09:09 AM ~$ python test.py time1: 12.435000 time2: 12.385000 Peace Bill Mill bill.mill at gmail.com -- http://mail.python.org/mailman/listinfo/python-list