2013-10-10 12 views
11

wenn ich eine Liste haben, sagen:Python: Weisen Sie jedes Element einer Liste in einer separaten Variable

ll = ['xx','yy','zz'] 

und ich möchte jedes Element dieser Liste in einer separaten Variablen zuzuweisen:

var1 = xx 
var2 = yy 
var3 = zz 

ohne zu wissen, wie lange die Liste ist, wie würde ich das tun? Ich habe versucht:

max = len(ll) 
count = 0 
for ii in ll: 
    varcount = ii 
    count += 1 
    if count == max: 
     break 

Ich weiß, dass VarCount keine gültige Art und Weise ist eine dynamische Variable zu schaffen, aber was ich versuche var0, var1, var2, var3 ect basierend auf zu tun ist, zu schaffen, was die Zählung .

Danke!

EDIT:

NVM sollte ich eine neue Frage beginnen. Danke für die Hilfe!

+17

warum in aller Welt möchten Sie das tun? –

+3

Variablen sind nur Namen. Was ist los mit 'll [0], ll [1], ll [2] ...' etc? – dansalmo

+0

Was ist der Anwendungsfall? Sieht so aus, als könnten Sie Ihre Herangehensweise überdenken. – karthikr

Antwort

9

Sie sollten zurück und überdenken, warum Sie dynamische Variablen "brauchen". Es besteht die Möglichkeit, dass Sie die gleiche Funktionalität beim Durchlaufen der Liste oder beim Aufteilen in Blöcke erstellen können.

+3

+1 - Manchmal ist die beste Antwort, nicht zu antworten, sondern stattdessen zu sagen "das ist nicht gut". – iCodez

+0

Ich kann nicht sagen, ich stimme nicht zu ... – alexis

+0

Sie können Recht haben. Ich denke, Listen waren eine Vereinfachung. Was ich wirklich damit zu tun habe, ist ein Datenframe unbekannter Länge, das ich in ein Format parsen muss, das mit API-Calls kompatibel ist. Das bedeutet, ich erstelle im Grunde ein Wörterbuch für jede "Zeile" des Datenrahmens. In diesem Fall muss ich sowieso die gleiche Anzahl an verschiedenen Wörterbüchern erstellen, daher dachte ich, ich würde stattdessen nur Variablen erstellen. Ich werde weiter darüber nachdenken –

10

Keine gute Idee, dies zu tun; Was werden Sie mit den Variablen tun, nachdem Sie sie definiert haben?

Aber angenommen, Sie haben einen guten Grund, hier ist, wie es in Python zu tun:

for n, val in enumerate(ll): 
    globals()["var%d"%n] = val 

print var2 # etc. 

Hier ist globals() der lokale Namensraum als Wörterbuch vorgestellt. Wie bei den Array-Indizes beginnt die Nummerierung bei Null, aber Sie können enumerate() anweisen, stattdessen bei 1 zu beginnen.

Aber noch einmal: Es ist unwahrscheinlich, dass dies für Sie wirklich nützlich ist.

+1

Ich werde abgelehnt, weil ich die Frage tatsächlich beantwortet habe? Komm schon! – alexis

0

Stattdessen tun:

>>> var = ['xx','yy','zz'] 
>>> var[0] 
'xx' 
>>> var[1] 
'yy' 
>>> var[2] 
'zz' 
+0

Ich mag es nicht. Der Zweck des Zuweisens, um einen eigenen Namen zu haben. –

2

Wenn die Anzahl der Artikel nicht ändert die Liste in einen String konvertieren und verteilen es auf Variablen.

wedges = ["Panther", "Ali", 0, 360] 
a,b,c,d = str(wedges).split() 
print a,b,c,d 
+0

das funktioniert tatsächlich für das, was ich brauche - ein Array in einzelne Argumente in einer Funktion Parameterliste konvertieren – javadba

13

allgemein gesprochen es nicht wird vorgeschlagen, dass Art der Programmierung für eine große Anzahl von Listenelementen/Variablen zu verwenden.

jedoch die folgende Aussage gut funktioniert und als

a,b,c = [1,2,3] 

erwartet Dieses „Destrukturierung“ genannt wird.

es könnte einige Codezeilen in einigen Fällen, z. Ich habe a, b, c als ganze Zahlen und wollen ihre String-Werte als sa, sb, sc:

sa, sb,sc = [str(e) for e in [a,b,c]] 

oder, noch besser

sa, sb,sc = map(str, (a,b,c)) 
+0

Danke für diese Antwort, das ist, was ich hier suchte. Ich hatte keinen Interpreter vor mir und wollte wissen, ob 'Problem, Lösung =" 1 + 1 = 2 ".split (" = ")" gültig war, da 'split()' eher ein Array zurückgibt als 2 Werte – JHixson

0

Ich gehe davon aus Sie die Liste sind zu erhalten haft eine SQL-Abfrage - warum Sie nicht auf eine Länge festlegen können.Damit scheint es für mich offensichtlich, dass Sie diese Werte nehmen und zusätzliche SQL-Befehle ausführen möchten, indem Sie jeden Wert aus dieser neu erworbenen Liste separat verwenden. Dies ist kein weg von Konzept, wenn Sie es aus einer SQL-Perspektive nehmen, und wenn ich richtig bin, werde ich die Syntax bereitstellen. Sie müssen jedoch mit dieser Lösung keine separaten Variablennamen erstellen und verlieren nicht die Vielseitigkeit, auf die Sie hinarbeiten. WENN ICH FALSCHE SORRY FÜR VERSCHWUNDEN DEINE ZEIT

Verwandte Themen