Seite 1 von 1
For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 14:57
von _nohtyp_
Ich suche eine Möglichkeit, beim Schleifendurchlauf neue Variablen zu erschaffen.
z.B. stelle ich mir das so vor:
Code: Alles auswählen
anzahl = 2
for i in range(1, anzahl+1):
variable+i = 12
neuevariable+i = 21
Am Ende soll die Variable "variable1" mit dem Wert 12, die "variable2" mit dem Wert 12, die "neuevariable1" mit dem Wert 21 und die "neuevariable2" mit Wert 21 herauskommen.
Geht sowas? Oder geht es besser?
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 15:01
von BlackJack
@_nohtyp_: Du möchtest wahrscheinlich eigentlich bei 0 anfangen und eine Liste verwenden.
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 15:01
von EyDu
Ganz schlechte Idee. Wenn du anfängst Namen zu Nummerieren, dann willst du eine vernünftige Datenstruktur verwenden. In der Regel Tupel, Listen oder Dictionaries.
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 16:21
von _nohtyp_
Mal mein Beispiel:
Code: Alles auswählen
for i in range(1, anzahl_tage+1):
# Baumverzeichnis des XML durchgehen
erster_tag = vp.getchildren()[3]
erster_kopf = erster_tag.getchildren()[0]
In meinem XML suche ich zuerst nach der Anzahl der Tage, für die Informationen vorliegen. Nun soll es für jeden Tag Variablen erstellen, und nicht nur für einen.
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 16:45
von BlackJack
@_nohtyp_: Und noch mal: Lass das mit den Nummern sein und erstelle eine Liste mit den Werten.
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 18:28
von _nohtyp_
Und wie setze ich das um?
Append()?
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 19:43
von BlackJack
@_nohtyp_: Zum Beispiel.
Re: For-Schleife Variablennamen
Verfasst: Mittwoch 29. Januar 2014, 20:59
von pillmuncher
Aber mit kleinem a.
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:04
von _nohtyp_
Ich brauche mal einen Beispiel-Code. Ich bekomme es sonst nicht hin.
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:09
von EyDu
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:16
von BlackJack
Code: Alles auswählen
In [6]: xs = list()
In [7]: xs
Out[7]: []
In [8]: xs.append(42)
In [9]: xs
Out[9]: [42]
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:21
von _nohtyp_
lol. Ich meine wie ich die das mit der Liste und der for Schleife mache. Hier mal ein wenig Code, wie ich es mir vorstelle:
variable kann unterschiedliche Werte haben
Code: Alles auswählen
liste = []
for i in rage(variable)
liste.append(irgendwas.getchildren()[0])
liste.append(nochwas.getchildren()[2])
...
return liste
Bei jedem Durchlauf muss eine neue Liste entstehen. Außerdem müssen auch nach jedem Durchlauf neue Positionen eingetragen werden (z.B. getchildren()[6]), da sich im XML dann mehrere dieser tags befinden.
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:29
von BlackJack
@_nohtyp_: Ich habe den Verdacht das Du Dich da zu sehr auf Positionen von Elementen verlässt. Das X in XML steht für „extensible”, also erweiterbar. Du solltest Dich also an den Tags der Elemente orientieren und Dich nicht darauf verlassen das alle Dokumente so aussehen werden wie das Beispiel was Du hast. Wenn Du mehrere Werte für jeden Tag extrahieren willst, dann solltest Du die Werte pro Tag vielleicht auch nicht in Listen stecken, sondern zum Beispiel `collections.namedtuple()` und *die* dann in einer Liste sammeln. Eventuell auch eine noch verschachteltere Datenstruktur, je nach dem wie die Daten und die Struktur der XML-Datei aussehen und was damit gemacht werden soll.
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:35
von Dami123
In meinem XML suche ich zuerst nach der Anzahl der Tage, für die Informationen vorliegen. Nun soll es für jeden Tag Variablen erstellen, und nicht nur für einen.
Wie wäre es mit dictionary.
http://docs.python.org/2/library/stdtyp ... ew-objects
Code: Alles auswählen
values = {}
for day in days:
values[day] = [infoone, infotwo]
print(values)
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 17:50
von _nohtyp_
Wie meinst du dass?
So?
Ich sehe da keinen Unterschied.
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 18:58
von Sirius3
@_nohtyp_: anscheinend besteht ja Dein XML nicht nur aus einer Liste mit einfachen Werten, sondern die Werte haben auch noch eine Unterstruktur. Diese Unterstruktur mußt Du natürlich in Python auch nachbilden, zum Beispiel indem Du Wörterbücher oder Named-Tuples nimmst. Statt »getchildren« nimmt man üblicherweise »find« bzw. »findtext« um den Inhalt bestimmter Tags zu bekommen.
Re: For-Schleife Variablennamen
Verfasst: Donnerstag 30. Januar 2014, 21:09
von _nohtyp_
Das mit dem Dictionary klingt gut. Wie schaffe ich es, dass so eine Liste herauskommt:
{"Montag":[Info1, Info2...], "Dienstag":[neueInfo1, neueInfo2, ...]}
Re: For-Schleife Variablennamen
Verfasst: Freitag 31. Januar 2014, 18:31
von _nohtyp_
Habe es geschafft. Danke.