Seite 1 von 1

flexible Anzahl an Variablen

Verfasst: Freitag 10. November 2006, 22:58
von mep
Hallo,

ist es möglich eine flexible Anzahl an Variablen festzulegen?
Etwa so:

Code: Alles auswählen

x = "irgend ein Wert"    #z.B. 10
for i in range(1, x):
var"i" = blabla
#anstatt "i" soll natürlich 1, 2, 3,...bis x-1 stehen
Ich würde mich freuen, wenn mir jemand einen Tip geben könnte.

MfG, MEP

Verfasst: Freitag 10. November 2006, 23:10
von Joghurt
Wofür soll das gut sein?
Es gibt Arrays/Listen.

Verfasst: Samstag 11. November 2006, 00:55
von Leonidas

Code: Alles auswählen

struktur = dict()
for i in range(5):
    struktur[i] = "Inhalt"

print struktur

Verfasst: Samstag 11. November 2006, 11:51
von mep
Hallo,
danke, das wird wohl die einfachste Lösung sein, auch wenn ich dann einiges umstellen muss.
Danke für die Antwort
Gruß, MEP

Verfasst: Montag 13. November 2006, 21:15
von rolgal_reloaded
@Leonidas

Warum verwendest du dict() statt struktur={} ?
Ist das jetzt üblich?

Liebe Grüße

rolgal_reloaded

Verfasst: Montag 13. November 2006, 21:27
von birkenfeld
Stilfrage. Obwohl es natürlich einen semantischen Unterschied gibt: "dict" kann auf Modulebene oder in den Builtins neu gesetzt sein, {} ergibt immer ein "richtiges" Python-Dictionary.

Verfasst: Montag 13. November 2006, 21:32
von rolgal_reloaded
Hallo birkenfeld,

kannst du den semantischen Unterschied etwas näher darlegen?
Ich bin einer von jenen, die es mit einem Satz nicht verstehen, sorry :D

LG

rolgal_reloaded

Verfasst: Montag 13. November 2006, 21:38
von birkenfeld
Na, z.B. gibt die Funktion

Code: Alles auswählen

def foo():
    struktur = dict()
    return struktur
etwas anderes als ein Dictionary zurück, wenn zuvor im Modul

Code: Alles auswählen

dict = int
steht oder jemand irgendwo im Programm

Code: Alles auswählen

import __builtin__
__builtin__.dict = int

Verfasst: Montag 13. November 2006, 21:48
von rolgal_reloaded
Ok, so insgesamt verstanden, aber warum soll jmd. so etwas tun?

Code: Alles auswählen

dict=int
:?:

rolgal_reloaded

Verfasst: Montag 13. November 2006, 22:05
von birkenfeld
Das ist natürlich wieder eine ganz andere Frage. ;)

Verfasst: Dienstag 14. November 2006, 18:05
von Leonidas
rolgal_reloaded hat geschrieben:Warum verwendest du dict() statt struktur={} ?
Ist das jetzt üblich?
Naja, üblich, nicht üblich. Ich habe es halt an der Stelle gemacht, hätte aber genauso gut auch {} nutzen können, da ich dict normalerweise nicht überschriebe.

Verfasst: Mittwoch 15. November 2006, 09:16
von N317V
Ist eben die Frage: will man sich die Möglichkeit offen halten, dict zu überschreiben auf die Gefahr hin, dass es dann an dieser Stelle nicht mehr passt, oder will man sicherstellen, dass hier definitiv ein echtes Dictionary verwendet wird, auf die Gefahr hin, dass man den Code nochmal anfassen muss, wenn man zusätzliche Funktionalitäten benötigt.

Verfasst: Mittwoch 15. November 2006, 10:19
von Blattlaus
Man sollte schlicht und ergreifend keine Basistypen (und dazu zähle ich auch die eingebauten Dictionarys) überschreiben.
Wenn man zusätzliche Funtkionalität braucht, steht es einem frei sich eine neue Klasse zu schreiben, die von dict erbt.
Einfach überschreiben ist - in meinen Augen - unglaublich schlechter Stil.

Verfasst: Mittwoch 15. November 2006, 10:33
von birkenfeld
Das finde ich auch. Darum spricht für mich auch nichts dagegen, dict() statt {} zu verwenden (auch wenns langsamer ist).

Verfasst: Mittwoch 15. November 2006, 11:52
von BlackJack
Also ich schreibe `dict()` und `list()` nicht weil ich mir Möglichkeiten offenhalten möchte, sondern weil ich es einfach aussagekräftiger finde.

Verfasst: Donnerstag 16. November 2006, 17:48
von rolgal_reloaded
...ausserdem gibts mit dict() ein paar nette Möglichkeiten:

z. Bsp:

Code: Alles auswählen

d = dict([(1,'a'),(2,'b')])
Habe ich gerade in Python gepackt gefunden.

Verfasst: Donnerstag 16. November 2006, 17:52
von birkenfeld
Oder

Code: Alles auswählen

>>> dict(a=1, b=2, c=3)
{"a": 1, "b": 2, "c": 3}