Circular Array
class CircularArray:
def __init__(self, ar, start):
"""
:param ar: List[<type>] - iterable list
:param start: [int] - start of iteration, zero indexed
"""
self.ar = ar
self.length = len(ar)
self.iter = start
self.remainder = len(ar)
def __iter__(self):
return self
def __next__(self):
"""
:return: next iterable it exists, otherwise
and exception gets raised
"""
if self.remainder == 0:
raise StopIteration
else:
self.iter += 1
self.remainder -= 1
return self.ar[(self.iter - 1) % self.length]
# interally the exceptions gets caught in the ranged loop
ca = CircularArray([1,2,3,4,5], 2)
for num in ca:
print(num, end=' ')Last updated