2009-01-10 11 views
6

Wie könnte ich ein Tupel von unbekannt, sagen wir, eine Liste auspacken?Python: Entpacken auf unbekannte Anzahl von Variablen?

Ich habe eine Reihe von Spalten mit Daten und bekommen sie in ein Tupel durch eine bestimmte Funktion aufgeteilt. Ich möchte dieses Tupel in Variablen entpacken, aber ich weiß nicht, wie viele Spalten ich haben werde. Gibt es eine Möglichkeit, es dynamisch zu so vielen Variablen zu entpacken, wie ich brauche?

Vielen Dank für Ihre Hilfe :)

Antwort

7

das Tupel zu einer Liste auspacken?

l = list(t) 
+0

Aber ich bin neugierig, warum Sie es tun wollen. =) – PEZ

+0

PEZ, ich bin ein Skript macht eine Reihe von Plotten der numpy Funktion ‚loadtxt mit“. Die Anzahl der Datenspalten bekannt Zeit nur zur Lauf zu handhaben, so kann ich nicht var Namen machen. – Nope

+1

Ja, aber wenn Sie haben die Daten in einem Tupel, mit dem Sie oft noch arbeiten können, wie Sie es mit einer Liste tun können. t [1] gibt Ihnen die gleichen Daten wie l [1] ohne das "Entpacken". Natürlich, wenn Sie Änderungen vornehmen die Daten "an Ort und Stelle" würden Sie eine Liste benötigen. – PEZ

3

Wollen Sie Variablen im laufenden Betrieb erstellen? Wie wird Ihr Programm wissen, wie man auf sie verweist, wenn sie dynamisch erstellt werden?

Tupeln haben Längen, genau wie Listen. Es ist durchaus zulässig etwas wie zu tun:

total_columns = len(the_tuple) 

Sie können auch ein Tupel in eine Liste konvertieren, obwohl es zu tun so keinen Nutzen ist, wenn Sie die Ergebnisse zu modifizieren beginnen soll. (. Tupeln kann nicht geändert werden, Listen können) Aber wie auch immer, ein Tupel zu einer Liste Umwandlung ist trivial:

my_list = list(the_tuple) 

Es sind Möglichkeiten Variablen on the fly zu erstellen (zB mit eval), Aber wie würden Sie wissen, wie Sie sich darauf beziehen können?

Ich denke, Sie sollten genau klären, was Sie versuchen, hier zu tun.

16

können Sie das Sternchen eine variable Länge entpacken. Zum Beispiel:

foo, bar, *other = funct() 

Dies sollte das erste Element in foo setzen, die zweiten in bar, und die ganzen Rest in other.

Update: Ich habe vergessen zu erwähnen, dass dies nur Python 3.0 kompatibel ist.

Verwandte Themen