Iterating Through List or Tuple
Larry Bates
larry.bates at websafe.com`
Tue Jul 22 17:52:50 EDT 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