@Samoth: Das sieht insgesamt etwas komisch aus. ``for i in range(len(sequence)):`` ist in Python ein „anti-pattern“ — man kann direkt über die Elemente einer Sequenz iterieren, ohne den Umweg über einen Index. Sollte man den *zusätzlich* benötigen, gibt es die `enumerate()`-Funktion.
Wenn man über zwei Sequenzen (oder generell iterierbare Objekte) ”parallel” iterieren möchte, gibt es die `zip()`-Funktion (und `itertools.izip()` in Python 2.x). Wobei ich es ein „code smell“ ist wenn man eigentlich zusammengehörende Informationen in parallelen Datenstrukturen hält. Also hier: warum gibt es eine Liste mit Datumsobjekten und eine weitere mit den dazugehörigen Daten? Warum sind die nicht in *einer* Liste zusammengefasst?
Musst Du wahlfrei auf die Monate zugreifen oder wird da das gleiche für jeden Monat gemacht? Denn dann würde ich ja als ersten Schritt die Daten in Monate aufteilen. `itertools.groupby()` ist da ein nützliches Werkzeug für.
Der Codeausschnitt ist auch ein bisschen verwirrend. Drüber steht als Kommentar es wird der Januar gesucht, die Ergebnisvariable heisst dann aber `feb_view`‽
Fall `vormon` den Vormonat meint, sollte es `vormonat` heissen.
Ein lineares Zusammensuchen eines Monats könnte so aussehen:
Code: Alles auswählen
month = 1
result = list()
for date, value in zip(dat64, view):
if date.month == month:
result.append(value)
elif date.month > month:
break
Das käme auch damit klar und liefert ein Ergebnis wenn es mal gar kein Datum im gesuchten Monat gibt. Überleg mal was Dein Code in dem Falle machen würde.
Mit einer kleinen Hilfsklasse und dem `bisect()`-Modul könnte man die Suchzeit etwas verbessern, falls das lineare Suchen zu langsam ist. Oder aber wie schon gesagt: man könnte auch einmal alle Monate gruppieren, falls man die am Ende alle braucht.
Falls es sich hier gar nicht um Listen sondern um Spalten aus einem `pandas.DataFrame` handelt, ist alles gesagte hinfällig, denn dann sollte man `pandas` auch tatsächlich nutzen.