Write an iterator that continues to iterate over a list, infinitely. Once you iterate over an entire list, you should start back at the first element of the input list.

class ListCycle(object):
    """
    >>> m = ListCycle([1, 2, 3])
    >>> for i in m:
    ...     print(i)
    ...
    1
    2
    3
    1
    2
    3
    1
    2
    3
    ...
    ...
    ...
    """
    "***YOUR CODE HERE***"

Toggle Solution

class ListCycle(object):

    def __init__(self, lst):
        self.lst = lst
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        item = self.lst[self.index]
        self.index = (self.index + 1) % len(self.lst)
        return item

I don't claim to be perfect so if you find an error on this page, please send me an email preferably with a link to this page so that I know what I need to fix!

comments powered by Disqus