Das obige gibt mir einen Fehler, dass "eins" nicht existiert. Kannst du nicht auf diese Weise zuordnen? Ich möchte eine inkrementierende Zahl für jede Variable in der Liste zuweisen.
Python-Variablen sind Namen für -Werte. Sie enthalten die Werte nicht wirklich.
for var in var_list:
bewirkt, dass 'var' wiederum zu einem Namen für jedes Element der Liste wird. Innerhalb der Schleife wirkt sich var = num
nicht auf die Liste aus, sondern bewirkt, dass var
nicht mehr ein Name für das Listenelement ist und stattdessen ein Name für den aktuellen Namen von num
ist.
Ebenso, wenn Sie die Liste erstellen, wenn one
, two
und three
noch keine Namen für Werte sind, können Sie sie nicht so verwenden, da Sie eine Liste von erstellen möchten die Werte, die diese Namen haben (und dann var_list
als Namen für diese Liste verwenden). Beachten Sie, dass die Liste die Werte auch nicht wirklich enthält: Sie verweist darauf, d. H. Teilt sie.
Sie können auf das Wörterbuch globaler Variablen mit der integrierten Funktion globals()
zugreifen. Das Dictionary verwendet Strings für Schlüssel, das heißt, Sie können Variablen mit Namen erstellen, die zur Laufzeit als Strings angegeben sind:
Nein, so funktioniert das nicht.
Sie können versuchen:
%Vor% Dies funktioniert, indem Sie die Variablen in einer Mehrfachzuordnung definieren. Genauso wie du a, b = 1, 2
benutzen kannst. Dies wird die range
ausrollen und ihre Werte den LHS-Variablen zuweisen, so dass es wie Ihre Schleife aussieht (außer dass es funktioniert).
Eine andere Option (die ich nicht in einem echten Programm empfehlen würde ...) wäre die Einführung der Variablennamen in eine exec-Anweisung:
%Vor% Eine Variable existiert erst, wenn Sie sie erstellt haben. Einfach auf eine Variable zu verweisen reicht nicht aus, um sie zu erstellen. Wenn Sie [one, two, three]
ausführen, verweisen Sie auf die Variablen one
, two
und three
, bevor sie erstellt werden.