2017-01-14 7 views
-2

Ich habe nach einer ähnlichen Frage gesucht, konnte aber keine Antwort finden.Stringwert in Liste konvertieren

Fnactot = [] 
Fnacdebut = 0 
Fnacnombre = 4 
Fnac = 0 
Fnac1 = ['major lazer', 'goooya', 1000] 
Fnac2 = ['phoenix', 'wolfgang', 1300] 
Fnac3 = ['jain', 'makemba', 1150] 
Fnac4 = ['dj shadow', 'aphex', 2100] 

while Fnacdebut < Fnacnombre : 
    Fnacdebut = Fnacdebut + 1 
    fnac = 'Fnac'+str(Fnacdebut) 
    print fnac 

Ich bin sicher, dass die Antwort einfach ist .... aber ich bin Kratzen meinem Kopf gibt ..

Ich mag würde meine Listen Fnac1, Fnac2, drucken ..... Aber ich drucke stattdessen den String-Wert von fnac = 'Fnac' + str (Fnacdebut). Wie ca, i die Zeichenfolge Ergebnis fnac konvertieren ...

auf den Namen meiner Listen zurück

Dank im Voraus ...

Antwort

0

Versuchen Sie nicht, Variablennamen zu generieren. Es beinhaltet die Auswertung von Variablennamen mit eval und es ist eine schlechte Praxis.

Nur ein kohärentes Datensatz aus dem

verwenden nur eine Liste von Listen Start erstellen:

fnac = [['major lazer', 'goooya', 1000], 
['phoenix', 'wolfgang', 1300],['jain', 'makemba', 1150],['dj shadow', 'aphex', 2100]] 

dann:

for f in fnac: 
    print(f) 

oder (eine bessere Kontrolle auf dem Display zu haben, und da es Integer in Ihren Listen gibt, müssen Sie sie in string konvertieren):

+0

Hallo Danke! Ja, ich denke schon an deine Antwort, aber meine Frage ist allgemeiner, wenn ich verstehe, wie ich einen String zurück zum Namen einer Liste bringen kann. Ich würde gerne verstehen, wie ich bekommen kann: print fnac> ['major lazer', 'goooya', 1000] und nicht drucken fnac> Fnac1 Irgendwelche Idee? – MeshellT

+0

das ist nur schlechte Praxis. Es führt zu "eval", und es ist unter anderem ein großes Sicherheitsproblem. –

+0

OK nicht gespeichert! vielen Dank – MeshellT

0

Nun, es gibt eine Möglichkeit, das zu tun: print(locals()[fnac]) wird den Inhalt von Listen drucken.

Noch bist du besser dran zu speichern Listen in einer anderen Liste oder Tupel und drucken Sie diese über die neue Liste von Iterieren:

fnacs = (['major lazer', 'goooya', 1000], 
     ['phoenix', 'wolfgang', 1300], 
     ['jain', 'makemba', 1150], 
     ['dj shadow', 'aphex', 2100]) 

for i, fnac in enumerate(fnacs): 
    print("Fnac%d" % i, fnac) 
0
Fnactot = [] 
Fnacdebut = 0 
Fnacnombre = 4 
Fnac = 0 
Fnac1 = ['major lazer', 'goooya', 1000] 
Fnac2 = ['phoenix', 'wolfgang', 1300] 
Fnac3 = ['jain', 'makemba', 1150] 
Fnac4 = ['dj shadow', 'aphex', 2100] 

while Fnacdebut < Fnacnombre : 
    Fnacdebut = Fnacdebut + 1 
    fnac = 'Fnac'+str(Fnacdebut) 
    print globals()[fnac] 

Dies wird tun, aber ein besserer Weg wäre:

lst1 = ['major lazer', 'goooya', 1000] 
lst2 = ['phoenix', 'wolfgang', 1300] 
lst3 = ['jain', 'makemba', 1150] 
lst4 = ['dj shadow', 'aphex', 2100] 
all_lists = [lst1, lst2, lst3, lst4] 

for lst in all_lists: 
    print lst 
+0

OK vielen Dank !!!! – MeshellT

Verwandte Themen