2016-08-31 4 views
0

Ich versuche, Variablen mit einem Index in einer Schleife zu benennen und zuzugreifen. Es ist ein bisschen schwer in Code um auszudrücken, was ich erreichen will, aber die Ausgabe ist das Wichtigste:Python: Name und Zugriff Variablen mit Schleifen

i = 0 
while i < len(myAr): #myAr is an array that has different length each run 
    var_i = i*5  
    print (var_i) 
    i = i+1 

    #So, say, len(myAr) = 3, my output will be: 
    var_0 = 0 
    var_1 = 5 
    var_2 = 10 

ich versucht habe, eine Liste, wie in früheren Veröffentlichungen vorgeschlagen, jedoch ist dies nicht das, was ich bin Suche nach wie in der 'Liste' Lösung Ich kann nicht wirklich auf die Variable zugreifen, sondern nur ihren Standort in einer Liste. Oder mit anderen Worten, ich kann diese Variable nicht direkt aufrufen, sondern nur ihre Position in der Liste.

+1

Haben Sie den Index des Elements durch 5 oder das Element selbst um 5 multiplizieren wollen? Ich verstehe nicht wirklich, was du hier willst. – Harrison

+1

Würde ein Wörterbuch für Sie arbeiten? I.e. 'myvars ['var_0'] = 0', dann aufgerufen als' myvars ['var_0'] ' – FamousJameous

+0

Wäre ein Wörterbuch passender? Was meinst du mit dem Zugriff auf eine Variable? In Python ist eine Variable ein Name, der auf ein Objekt verweist, nicht mehr. Meinst du ein Array wie im Array-Modul oder etwas anderes? https://docs.python.org/3/library/array.html – cdarke

Antwort

2
from itertools import count 

variables = {} 

myAr = 'adf' 
counter = count() 
i = counter.next() 

while i < len(myAr): #myAr is an array that has different length each run 
    var_name = 'var_{}'.format(i) 
    variables[var_name] = i*5 
    print variables[var_name] 
    i = counter.next() 

locals().update(variables) 
print var_0, var_1, var_2 
+1

'Einheimische()' tut nicht, was Sie denken, dass es hier tut ... es sollte nicht mutiert sein ... –

+0

@NinjaPuppy danke. – turkus

+0

Das sollte funktionieren, aber gibt es eine Möglichkeit, auf diese Variablen auch mit einer Schleife zuzugreifen? h.: ​​ 'while counter Yair

2
myAr = [1,2,3] 

for i in range(len(myAr)): 
    val = i * 5 
    print val 

Die Länge myAr 3 ist, und dies ist die Ausgabe:

0 
5 
10 

Wenn Sie die Ausgabe sein, genau wie die Ausgabe, die Sie in der Frage zur Verfügung gestellt möchten, müssen Sie die Druckzeile ändern auf diese: print 'var_{} = {}'.format(i, val) die für dieses Beispiel würde die Ausgabe:

var_0 = 0 
var_1 = 5 
var_2 = 10 
+0

Die Idee ist, dass die Variable benannt wird: var_0, var_1 etc ... nicht nur den Ausdruck. – Yair

0
i=0; 
while i<3: 
    var_i=i*5 
    print(var_i) 
    i=i+1 

Dies ist die Ausgabe, die Sie beliebig manipulieren können.

Ausgang:

sh-4.3$ python main.py                                    
0                                         
5                                         
10