flexible Anzahl an Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Freitag 10. November 2006, 22:58

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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Freitag 10. November 2006, 23:10

Wofür soll das gut sein?
Es gibt Arrays/Listen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 11. November 2006, 00:55

Code: Alles auswählen

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

print struktur
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Samstag 11. November 2006, 11:51

Hallo,
danke, das wird wohl die einfachste Lösung sein, auch wenn ich dann einiges umstellen muss.
Danke für die Antwort
Gruß, MEP
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Montag 13. November 2006, 21:15

@Leonidas

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

Liebe Grüße

rolgal_reloaded
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 13. November 2006, 21:27

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.
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Montag 13. November 2006, 21:32

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
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 13. November 2006, 21:38

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
rolgal_reloaded
User
Beiträge: 312
Registriert: Dienstag 24. Oktober 2006, 19:31

Montag 13. November 2006, 21:48

Ok, so insgesamt verstanden, aber warum soll jmd. so etwas tun?

Code: Alles auswählen

dict=int
:?:

rolgal_reloaded
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 13. November 2006, 22:05

Das ist natürlich wieder eine ganz andere Frage. ;)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 14. November 2006, 18:05

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Mittwoch 15. November 2006, 09:16

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.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
Blattlaus
User
Beiträge: 55
Registriert: Donnerstag 24. August 2006, 08:55

Mittwoch 15. November 2006, 10:19

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.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Mittwoch 15. November 2006, 10:33

Das finde ich auch. Darum spricht für mich auch nichts dagegen, dict() statt {} zu verwenden (auch wenns langsamer ist).
BlackJack

Mittwoch 15. November 2006, 11:52

Also ich schreibe `dict()` und `list()` nicht weil ich mir Möglichkeiten offenhalten möchte, sondern weil ich es einfach aussagekräftiger finde.
Antworten