Seite 1 von 1

variablen dynamisch erstellen

Verfasst: Samstag 25. Oktober 2008, 15:08
von dannemann
hi leute,

irgendwie steh ich komplett auf der leitung.
also ich möchte mehrere variablen dynamisch erstellen

werte1,werte2,werte3,...

z.B. mit einer for-schleife.
ist dies überhaupt möglich oder bin ich jetzt ganz blöd :?:

hoffe mir kann jemand helfen.
danke

Verfasst: Samstag 25. Oktober 2008, 15:10
von numerix
Eine Liste ist dein Freund.

Verfasst: Samstag 25. Oktober 2008, 15:15
von dannemann
oh mann,

vielen dank numerix

das ich da nich selbst draufgekommen bin :oops:

tschuldigung das ich euch damit belästigt haben,

phil

Verfasst: Samstag 25. Oktober 2008, 17:02
von snafu
So ein Forum ist dazu gedacht, Leute zu belästigen (sofern mit "belästigen" "Fragen stellen" gemeint ist). ;)

Verfasst: Samstag 25. Oktober 2008, 18:04
von audax

Code: Alles auswählen

In [1]: for i in xrange(10):
   ...:     locals()['foo_%d' % i] = i
   ...:     
   ...:     

In [2]: foo_2
Out[2]: 2

In [3]: foo_5
Out[3]: 5
Das geht alles ;)

Verfasst: Samstag 25. Oktober 2008, 18:17
von BlackVivi
audax hat geschrieben:

Code: Alles auswählen

In [1]: for i in xrange(10):
   ...:     locals()['foo_%d' % i] = i
   ...:     
   ...:     

In [2]: foo_2
Out[2]: 2

In [3]: foo_5
Out[3]: 5
Das geht alles ;)
Grrr, bring Leuten gar nicht erst sowas bei... Natürlich geht alles, aber wenn man sowas in Produktivcode macht...

Es wird unübersichtlich, es wird anstrengend zu benutzen mit'r Zeit und wenn du oder jemand anders den Code noch verstehen möchte... in ein paar Wochen, dann sollte man wirklich lieber auf Lists oder auf die wunderschönen Dicts von Python zurückgreifen. Das da oben ist wirklich eher für... wenige Einsatzzwecke gedacht.

Verfasst: Samstag 25. Oktober 2008, 18:23
von Leonidas
BlackVivi hat geschrieben:Das da oben ist wirklich eher für... wenige Einsatzzwecke gedacht.
Mir würden da eigentlich nur obskure DSLs einfallen, aber da wäre man in Python sowieso mit externen DSLs die auf spezielle Dictionaries zugreifen besser dran.

Verfasst: Samstag 25. Oktober 2008, 18:23
von Trundle
BlackVivi hat geschrieben:
audax hat geschrieben:

Code: Alles auswählen

In [1]: for i in xrange(10):
   ...:     locals()['foo_%d' % i] = i
   ...:     
   ...:     

In [2]: foo_2
Out[2]: 2

In [3]: foo_5
Out[3]: 5
Das geht alles ;)
Grrr, bring Leuten gar nicht erst sowas bei... Natürlich geht alles, aber wenn man sowas in Produktivcode macht...
Und die Dokumentation sagt zu `locals()` eigentlich:
Warning: The contents of this dictionary should not be modified; changes may not affect the values of local variables used by the interpreter.

Verfasst: Samstag 25. Oktober 2008, 18:57
von DasIch
Trundle hat geschrieben:Und die Dokumentation sagt zu `locals()` eigentlich:
Warning: The contents of this dictionary should not be modified; changes may not affect the values of local variables used by the interpreter.
Nichts was sich nicht umgehen liesse.

Code: Alles auswählen

In [34]: for i in xrange(10):
    setattr(__builtins__, 'foo_%d' % i, i)
   ....:
   ....:

In [36]: foo_2
Out[36]: 2

In [37]: foo_5
Out[37]: 5

Verfasst: Samstag 25. Oktober 2008, 18:59
von audax
Dann eben nur auf Modulebene mit globals() ;)

€dit:
was aufs gleiche wie bei meinem Vorposter hinausläuft.