[Tutor] complex iteration over a list (original) (raw)
Michele Alzetta michele.alzetta at aliceposta.it
Sat Jul 3 04:54:21 EDT 2004
- Previous message: [Tutor] findall()
- Next message: [Tutor] complex iteration over a list
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Il ven, 2004-07-02 alle 20:51, Gregor Lingl ha scritto:
Suggestion: Within your for-loop: create a pair of names d, i which initially have the values day and index replace the 2 if-statements with a while loop that calculates the correct day number: you have to subtract months[i] from d as long as d > months[i] and subsequently increment i by 1 (to use the next month in the next execution of the loop body) append d to daysinperiod
Hmm .. yes, I think that is what I was looking for, and it will come in handy for another thing of the same sort I'll have to code in a while. This particular problem though is more easily solved ! I've found that calendar is useless, but datetime.timedelta does it, as my startday is a timedelta object (and so is my endday, which I had changed to number of days thinking it would make things simpler).
startday = datetime(2004,6,1,8) endday = datetime(2004,9,1,8)
def daysinperiod(startday,endday): daysinperiod = [] while startday <= endday: daysinperiod.append(startday.day) startday = startday + timedelta(days=1) return daysinperiod
Eliminates the need for lists with the length of different months, eliminates the nightmare of leap-years ... Python is always simpler and more powerful than one thinks :-)
-- Michele Alzetta <michele.alzetta at aliceposta.it>
- Previous message: [Tutor] findall()
- Next message: [Tutor] complex iteration over a list
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]