Also habe ich mich gefragt, wie ich am besten eine Liste mit leeren Listen erstellen kann:
[[],[],[]...]
Aufgrund der Funktionsweise von Python mit Listen im Speicher funktioniert dies nicht:
[[]]*n
Dadurch wird zwar erstellt, [[],[],...]aber jedes Element ist dieselbe Liste:
d = [[]]*n
d[0].append(1)
#[[1],[1],...]
So etwas wie ein Listenverständnis funktioniert:
d = [[] for x in xrange(0,n)]
Dies verwendet jedoch die Python-VM zum Schleifen. Gibt es eine Möglichkeit, eine implizite Schleife zu verwenden (wobei davon profitiert wird, dass sie in C geschrieben ist)?
d = []
map(lambda n: d.append([]),xrange(0,10))
Das ist eigentlich langsamer. :(
timeitWas haben Sie gelernt, als Sie diese gemessen haben ?
map(lambda x: [], xrange(n))langsamer ist als ein Listenverständnis.
d = [[] for x in xrange(0,n)]. Sie müssen entweder eine explizite Schleife in Python ausführen oder eine Python-Funktion / Lambda wiederholt aufrufen (was langsamer sein sollte). Aber ich hoffe immer noch, dass jemand etwas veröffentlicht, das zeigt, dass ich falsch liege :).