Zuweisen von Werten zu Variablen in einer Liste mit einer Schleife

7
%Vor%

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.

    
johnharris85 14.01.2011, 02:12
quelle

4 Antworten

8

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.

    
Karl Knechtel 14.01.2011, 02:31
quelle
8

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:

%Vor%

Empfohlen lesen

    
Michael Cornelius 14.01.2011 03:20
quelle
4

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%     
TryPyPy 14.01.2011 02:13
quelle
2

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.

    
Bryan Oakley 14.01.2011 02:14
quelle

Tags und Links