it-swarm.com.de

Python: Ordnen Sie jedes Element einer Liste einer separaten Variablen zu

wenn ich eine Liste habe, sagen Sie:

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

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

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 Methode zum Erstellen einer dynamischen Variablen ist, aber ich versuche, var0, var1, var2, var3 und basierend auf dem Zählerstand zu erstellen.

Vielen Dank!

BEARBEITEN:

nvm Ich sollte eine neue Frage stellen. Vielen Dank für die Hilfe!

14
David Yang

im Allgemeinen wird nicht vorgeschlagen, diese Art der Programmierung für eine große Anzahl von Listenelementen/Variablen zu verwenden.

Die folgende Anweisung funktioniert jedoch einwandfrei und wie erwartet

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

Dies wird als "Destrukturierung" bezeichnet.

in einigen Fällen können Sie einige Codezeilen einsparen, z. Ich habe a, b, c als Ganzzahlen und möchte deren Zeichenfolgenwerte als sa, sb, sc verwenden:

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

oder noch besser

sa, sb,sc = map(str, (a,b,c) )
18
cmantas

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

Angenommen, Sie haben einen guten Grund: Hier ist, wie man es in Python macht:

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

print var2  # etc.

Hier ist globals() der lokale Namespace, der als Wörterbuch dargestellt wird. Die Nummerierung beginnt wie bei den Array-Indizes bei Null, Sie können jedoch enumerate() anweisen, stattdessen bei 1 zu beginnen.

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

14
alexis

Sie sollten zurückgehen und überdenken, warum Sie dynamische Variablen "brauchen". Die Chancen stehen gut, dass Sie die gleiche Funktionalität erstellen können, indem Sie die Liste durchlaufen oder in Blöcke schneiden.

9
Darrick Herwehe

Wenn sich die Anzahl der Elemente nicht ändert, können Sie die Liste in eine Zeichenfolge konvertieren und in Variablen aufteilen. 

wedges = ["Panther", "ALi", 0, 360]
a,b,c,d = str(wedges).split()
print a,b,c,d
2
user1767754

Ich gehe davon aus, dass Sie die Liste über eine SQL-Abfrage erhalten - warum Sie sich nicht auf eine Länge festlegen können. Damit ist es offensichtlich, dass Sie diese Werte übernehmen und zusätzliche SQL-Befehle ausführen möchten, indem Sie jeden Wert aus dieser neu erworbenen Liste separat verwenden. Dies ist kein Weg aus dem Konzept, wenn Sie es aus einer SQL-Perspektive betrachten und wenn ich richtig liege, werde ich die Syntax angeben. Sie müssen jedoch mit dieser Lösung keine separaten Variablennamen erstellen und die Vielseitigkeit, die Sie anstreben, nicht verlieren. Wenn ich falsch bin, um Ihre Zeit zu verschwenden

0
BrianB

Tun Sie dies stattdessen:

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

Ich habe eine anständige Bewerbung dafür gefunden. Ich habe eine Reihe von CSV-Dateien, die ich als Datenframe unter ihrem Namen speichern möchte:

all_files = glob.glob(path + "/*.csv")
name_list = []
for f in all_files:
    name_list.append(f[9:-4])
for i,n in enumerate(name_list):
    globals()[n] = pd.read_csv(all_files[i])
0
remanuel