Sowas hält den Geist fit ...Daniela hat geschrieben:Vielen Dank dafür, dass du dir solche Gedanken gemacht hast um mein Problem.
Da abwechselnd mit beiden Listen immer das gleiche gemacht wird - nämlich jeweils die beiden nächsten Punkte an die endgültige Liste anzuhängen - habe ich eine Liste "liste" genommen, in die ich die beiden Teillisten packe. Die Boolsche Variable erste_liste sorgt nun durch den alternierenden Wert dafür, dass jeweils abwechselnd eine der beiden Listen mit den Punkten ausgewählt wird. Das unäre "+" sorgt dafür, dass aus dem boolschen Wert eine 0 oder 1 gemacht wird als Index für "liste". Wie ich eben festgestellt habe, ist das verzichtbar - geht auch ohne.Daniela hat geschrieben:Nur versteh ich nicht so richtig den Quellcode.
Das Löschen der jeweils an die Endliste angehängten Punkte aus den beiden Teillisten wäre natürlich verzichtbar, hat aber m.E. den Vorteil, dass man auf diese Weise die beiden Teillisten nicht mit einem mitzuführenden Index durchlaufen muss, sondern einfach immer die ersten beiden Punkte nimmt.
Je nachdem, ob die Anzahl der Punkte in den Listen gerade oder ungerade ist, verläuft der letzte Zug von P3 nach P4 oder eben andersherum. Am Ende befindet sich also in der noch nicht leeren Liste nur noch 1 Punkt (statt zweien), der als letzter Punkt anzuhängen ist.
Und während ich das gerade aufschreibe, fällt mir auf, dass die Geschichte mit dem p_anz überflüssig ist. Die Zeile "p_anz = ..." kann weg, in den folgenden Zeilen kann p_anz einfach durch den Wert 2 ersetzt werden.
Etwas "geglättet" nun also so:
Code: Alles auswählen
# Pseudopunkte erzeugen
liste_P1P3 = ["P1P3-%02i" %i for i in xrange(7)]
liste_P2P4 = ["P2P4-%02i" %i for i in xrange(7)]
# Listen zusammenfuehren
listen = [liste_P1P3,liste_P2P4]
liste_komplett = [liste_P1P3.pop(0)]
erste_liste = False
while True:
erste_liste = not erste_liste
liste = listen[erste_liste]
liste_komplett.extend(liste[:2])
del(liste[:2])
if not liste:
liste_komplett.extend(listen[not erste_liste])
break
# Pseudopunkte ausgeben
for punkt in liste_komplett:
print punkt