[Tutor] complex iteration over a list

Michele Alzetta michele.alzetta at aliceposta.it
Fri Jul 2 14:03:04 EDT 2004


Hallo all !

I'm stuck on the following type of code (still working on
classes that handle periods of time).

I have a list called months:

months = [31,28,31,30,31,30,31,31,30,31,30,31]
daysinperiod = []
startday, numberofdays, index = 10, 40, 5
# actual value of these has been determined previously
# in my program, I am just assigning them directly now to
# keep things simple

for day in range(startday,numberofdays):
# the range is a period of time, in this case, from the 10th
# of June to the 20th of July
    if day <= months[index]:
        daysinperiod.append(day)
    if day > months[index]:
        daysinperiod.append(day-months[index])
print daysinperiod
        
The output I want is a list like this: 
10,11,..,30,1,2,...,19

Above code works perfectly in this case, but it doesn't if numberofdays 
is > 51 of course. 
To have this work for periods that overlap the end of two or more months
I would have to be able to change the value of "index" in my recursion
somehow ... ?
For all practical purposes I could simply forbid the case where the
length of my time period is too long, but supposing in the future I
wanted to adapt this class for other things ? Besides, the purpose of
this whole thing is learning !

I could also look into the calendar module... (which will probably end
up being the simplest way of handling this).
But I keep on feeling there ought to be an elegant way to do this even
without calendar. 
Any suggestions ?

-- 
Michele Alzetta <michele.alzetta at aliceposta.it>



More information about the Tutor mailing list