2016-04-08 9 views
-1

Ich versuche, Variablennamen basierend auf einer anderen Variablen in einer Schleife zu erstellen. Wie würde ich etwas so machen?Erstellen von Variablennamen basierend auf anderen Variablen

y = a changing integer 
for x in range(0, y): 
    x += 1 
    var(x) = something[x] 
print var1 
print var2 
+3

Sie nicht. Sie möchten wahrscheinlich eine Liste erstellen. –

Antwort

4

Ich erinnere mich, dass ich genau diese Frage hatte, als ich anfing, Python zu lernen. Die kurze Antwort ist, dass Sie es nicht tun sollten, weil es eine schlechte Idee ist. Es verstopft Namespaces, macht Code schwieriger zu debuggen und viel schwieriger für die Menschen zu lesen. Verwenden Sie stattdessen ein Wörterbuch:

y = a changing integer 
x = 0 
var = {} 
for x in range(0, y): 
    x += 1 
    var[x] = something[x] 
+0

Sie können das tatsächlich tun. – Pythonista

+1

ja, mit globals, die nicht für Code beliebiger Komplexität empfohlen werden – n1c9

+1

True, +1 für die Empfehlung dict. Und Beratung dagegen. Globals definitiv nicht notwendig hier – Pythonista

3

Sie können globals als eine Art und Weise verwenden, um dynamisch Variablen zu erstellen

z.B. Für Globals -

>>> for i in range(10): 

...  globals()['number_%d' % i] = i 

>>> print(globals()) 

>>> {'__loader__': <class '_frozen_importlib.BuiltinImporter'>, 'number_3': 3, 
'number_9': 9, 'number_1': 1, 'number_7': 7, 'number_4': 4, 'number_6': 6, 
'number_0': 0, '__doc__': None, '__package__': None, 'number_8': 8, 'number_5': 5, 
'__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', 'i': 9, 
'__spec__': None, 'number_2': 2} 

Sie könnten Ihre Bedingung verwenden, um anzugeben, wie diese zugewiesen werden.

Aber für was Sie brauchen, klingt das und in der Regel ist immer unnötig. A tuple, list sogar eine dict wie in der anderen Antwort vorgeschlagen wäre besser.

+0

Ich denke nicht, dass 'Locals()' hier funktionieren wird. Es muss "globals()" sein. –

+0

Warum der Downvote? – Pythonista

Verwandte Themen