Giovanni Bajo wrote: > ------- foo.py ----- > def iters(n): > s = '' > for i in xrange(n): > s += chr(i%64) > return s > > def iters2(n): > L = [] > for i in xrange(n): > L.append(chr(i%64)) > return "".join(L) > ------- foo.py ----- > > So, look, it's even faster than the solution you're proposing.
since you know the length, you can preallocate the list def iters3(n): L = [None]*n for i in xrange(n): L[i] = chr(i%64) return "".join(L) or use a preallocated array def iters4(n): L = array.array("B", [0])*n for i in xrange(n): L[i] = i%64 return L.tostring() on my machine, the last one is twice as fast as your "even faster" solution under 2.4. in earlier versions, it's just under 5 times faster. for the OP's problem, a PIL-based solution would probably be ~100 times faster than the array solution, but that's another story. </F> -- http://mail.python.org/mailman/listinfo/python-list