2016-05-15 4 views
2

Gibt es eine effizientere, einfachere Möglichkeit, ein Tupel von Listen der Länge 'n' zu erstellen?Initialisierung eines Tupel mit n Länge von Listen

So in Python, wenn ich, ich könnte etwas tun, wie eine Liste von Listen erstellen wollte:

[[] for _ in range(list_length)] 

und erstelle ein Tupel von Listen ähnlicher Art konnte ich technisch schreiben:

tuple([[] for _ in range(list_length)]) 

Aber ist das rechnerisch ineffizient, könnte es auf eine schönere Weise geschrieben werden?

Warnung:Für jeden anderen, der es für eine gute Idee hielt, veränderbare Objekte wie Listen in ein Tupel zu setzen (unveränderlich); es scheint tatsächlich im Allgemeinen schneller zu sein (rechnerisch), nur eine Liste zu verwenden (in meinem Fall eine Liste von Listen).

+1

Ein Tupel von Listen ist eine ungewöhnliche Sache zu wollen, außerhalb von einigen kurzfristigen, eng begrenzten Anwendungen wie Funktion Star-Argumente. Der Hauptvorteil eines Tupels ist, dass es unveränderlich ist, für die Verwendung in Sätzen, als Wörterbuchschlüssel usw. Wenn jedoch die _contents_ eines Tupels veränderbar sind, kann das Tupel selbst in keiner dieser Rollen sicher verwendet werden. –

+0

Wow, tatsächlich dauert es etwas länger (nach meinem sehr schlampigen Benchmark), die Listen im Tupel zu erstellen, zu öffnen und an sie anzuhängen, als wenn man dasselbe mit einer Liste von Listen macht. – Patrick

Antwort

2

Verwenden Sie ein Genex anstelle eines LC.

+0

Danke! Aus irgendeinem Grund ist mir das nicht eingefallen. – Patrick