["python"]
Python: fastest way to create a list of n lists

So I was wondering how to best create a list of blank lists: [[],[],[]...] Because of how Python works with lists in memory, this doesn't work: [[]]*n This does create [[],[],...] but each element is the same list: d = [[]]*n d[0].append(1) #[[1],[1],...] Something like a list comprehension works: d = [[] for x in xrange(0,n)] But this uses the Python VM for looping. Is there any way to use an implied loop (taking advantage of it being written in C)? d = [] map(lambda n: d.append([]),xrange(0,10)) This is actually slower. :(
The probably only way which is marginally faster than d = [[] for x in xrange(n)] is from itertools import repeat d = [[] for i in repeat(None, n)] It does not have to create a new int object in every iteration and is about 15 % faster on my machine. Edit: Using NumPy, you can avoid the Python loop using d = numpy.empty((n, 0)).tolist() but this is actually 2.5 times slower than the list comprehension.