Iterating Through List or Tuple

Larry Bates larry.bates at websafe.com`
Tue Jul 22 23:52:50 CEST 2008


Samir wrote:
> Is there a way to loop or iterate through a list/tuple in such a way
> that when you reach the end, you start over at the beginning?  For
> example, suppose I define a list "daysOfWeek" such that:
> 
>>>> daysOfWeek = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
> 
> If today is Sunday, I can set the variable "day" to today by:
> 
>>>> i = iter(daysOfWeek)
>>>> day = i.next()
>>>> print day
> sunday
> 
> If I want to find out the day of the week 2 days from now, then this
> code works ok:
> 
>>>> for x in xrange(2): day = i.next()
> 
>>>> print day
> tuesday
> 
> However, when extending my range beyond the number of items in the
> list, I receive an error.  For example, if I want to find out the day
> of the week 11 days from today, I get this:
> 
>>>> for x in xrange(11): day = i.next()
> 
> 
> Traceback (most recent call last):
>   File "<pyshell#87>", line 1, in <module>
>     for x in xrange(11): day = i.next()
> StopIteration
> 
> Is there a way to easily loop through a list or tuple (and starting
> over at the beginning when reaching the end) without having to resort
> to an "if" or "while" statement?
> 
> (My question concerns the more general use of lists and tuples, not
> necessarily determining days of the week.  I know about using "import
> datetime" and "from calendar import weekday" but thought that using
> the days of the week would best illustrate my problem.)
> 
> As always, thanks in advance.
> 
> Samir


 >>> import itertools
 >>> i = itertools.cycle(daysOfWeek)
 >>> i.next()
'sunday'
 >>> i.next()
'monday'
.
.
.
 >>> i.next()
'saturday'
 >>> i.next()
'sunday'

-Larry



More information about the Python-list mailing list