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?

Code: Alles auswählen

tag1 = collections.namedtuple(stunde, fach, ...)
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.