Die erste und Letzte Element in einer python for-Schleife
Ist es eine elegante und pythonic way Falle für das erste und das Letzte Element in einer for-Schleife die Iteration über einen generator?
from calendar import Calendar
cal = Calendar(6)
month_dates = cal.itermonthdates(year, month)
for date in month_dates:
if (is first item): # this is fake
month_start = date
if (is last item): # so is this
month_end = date
Dieser code versucht, den ersten Tag der Woche, der Monat endet, der Letzte Tag der Woche, der Monat endet. Beispiel: für Juni, den Monat-sollte sich die Evaluierung auf 5/31/09. Obwohl es technisch ein Tag im Mai, es ist der erste Tag der Woche, die im Juni beginnt.
Monat-Termine ist ein generator, daher kann ich nicht tun [:-1] ist. Was ist ein besserer Weg, dies zu behandeln?
InformationsquelleAutor T. Stone | 2009-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde nur mit Gewalt in eine Liste am Anfang:
Da nur 42 Tagen (gerechnet vor-und nachlaufende Kontext), das hat vernachlässigbare Auswirkungen auf die Leistung.
Auch, mit SONNTAG ist besser als eine Magische Zahl.
Danke, Triptychon.
Sehr kleinen Punkt nitpickiness: Als die OP anspielt, itermonthdates tatsächlich gibt Ihnen die Daten auf einer gedruckten Kalender, komplett mit Füller am Anfang und Ende der 7-Tage-Wochen. Deshalb ist die maximale Größe der Liste für einen Monat 42. (Ich weiß, die Speicherkapazität von modernen Maschinen-Sorten zu handhaben, die extra 11 Termine. 😉
Guter Punkt, John.
+1 für den SONNTAG extra Tipp.
InformationsquelleAutor Matthew Flaschen
Richie hat die richtige Idee. Einfacher:
clevere Nutzung von der für die variable
+1 für "weiter" () zu packen, das erste element und Vereinbarung mit T. Stein
InformationsquelleAutor Tom Anderson
Wie über dieses?
enumerate()
können Sie finden Sie die erste und diedate
variable außerhalb der Schleife geben Sie die Letzte.InformationsquelleAutor RichieHindle
Für dieses spezifische problem, ich denke, ich gehe mit Matthew Flaschen Lösung. Es scheint die einfachste zu mir.
Wenn Ihre Frage gemeint ist, mehr im Allgemeinen, obwohl, bei jedem generator (mit einer unbekannten und möglicherweise große Anzahl von Elementen), dann etwas mehr wie RichieHindle Ansatz besser sein könnte. Meine leichte Modifikation auf, seine Lösung ist nicht zum auflisten und testen Sie element 0, sondern nehmen Sie einfach das erste element explizit:
InformationsquelleAutor John Y