Level 1 : Circular iterator that loops indefinitely over a list.


class CircularIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if not self.data:
            raise StopIteration
        value = self.data[self.index]
        self.index = (self.index + 1) % len(self.data)
        return value

it = iter(CircularIterator([1, 2, 3]))
for _ in range(5):
    print(next(it), end=" ")

Author: SandhyaR | Tags: iterator | 1859+ Python FAQs | Share
handling-missing-values-(fillna,-dropna) | directory-operations | swapping | round | return-statement | zip-function | thread-synchronization | docstring | sets | descriptors | turtle | filter-function | multiple-inheritance | operator-and | creating-custom-modules | loop | raise | identifier | built-in | for | datetime | list-indexing | name-mangling | data-type | global-variable | arithmetic-operation | managing-directories-with-os-and-shutil | built-in-function | list-operation | conversion | range | assignment-operator | python-repl | formatting-with-strftime | pseudocode | overflow | matrix | booleans | generators | string-method | frozenset | generator | joining-and-merging-dataframes | factorial-function | numpy | thread | namespace | tuples | static-method | with-statement | init | set-operation | string-formatting | mathematics | pass | list-vs-tuple | min-max-function | introduction-to-multiprocessing | global-keyword | logical-operators | bitwise-operator | generators-in-python | overriding-methods | floats | method | attribute | loop-control | function | aggregating-data-with-functools.reduce() | iterator | dicts | python-syntax-and-structure | class-and-instance-variable | file_handling | lambdas | sorting-and-ranking | using-yield-in-functions | data-structure | stack | class | filtering-and-indexing | immutable-data-type | data-type | split | iterable | using-map()-for-transformations | feature | class-and-object | implementation | error | using-os-and-pathlib-modules | conditional-statements | type-conversion | __init_subclass__ | python | list-comprehension | staticmethod | polymorphism | iterators | gil | list-comprehensions | multiple-except-blocks | list-mutation | file-handling | pickling--unpickling | math-copysign | input-function | filter | functional-programming | difference-between-threads-and-processes | lambda | statement | set | expand-tab | encoding | join | array | raise-statement | boolean-masking | membership-operators-(in,-not-in) | loop-control-statements | sys-module | tuple-methods | int | update | key-value-pairs | opening-files-(open()) | identity-operator | method-overloading | multithreading | error-handling | scientific-notation | walking-through-directories-using-os.walk() | __all__-attribute | threading | matplotlib | matrix-list-comprehension | min-function | lists | file | input-function | pandas | control-statement | assignment-operators | import-method | identity-operator | version | string-slicing | compute | data_structure | why-use-multiprocessing-over-threading?-(gil) | mysql | application | immutability | shallow-copy | head-and-tail | precedence | using-the-threading-module | mapping-function | object-attribute | logical-operation | datetime.date,-datetime.time,-datetime.datetime | string | bitwise | recurssion | string-manipulation | invalid-list | choice | python-django | complex-number | creating-and-starting-threads | functions | comment | list-comprehension | type-conversion-and-casting | syntax | syntax-error | variable | enumerate() | asyncio | reading-and-writing-large-files-efficiently | list | error-handling | interpreter | counter-function | global-variable | magic-method | typeerror | exception | version-check | dictionary-methods | writing:-write(),-writelines() | tuple | mathematical-function | memory-management | dictionary-comprehensions | parameter | inherit | integer | literal-characters-and-special-characters | exponentiation | time-series-with-pandas | comparison | package-management | slice | floating-point-precision | virtual-environment | data-structures | methods | round-function | conditional-statement | type-conversion | center | collections | max-min | context-manager | append | while-else-loop | collection | zip | python_version | __future__ | id-function | input | boolean-and-non-boolean | introduction-to-threads | intering | sorting | data-type-conversions | namedtuple | precedence-and-associativity | rollback | match | multiprocessing | design-principle | logical-operator | postfix | conditional-statement | complex | heap-memory | using-assertions-(assertequal,-assertraises) | introduction-to-python | list-methods-and-slicing | benefit | using-else-and-finally | zfill-function | working-with-binary-files-(rb,-wb) | library | higher-order-function | control-flow | functional-programming | def | advanced-file-operations | random-function | working-with-dates-and-times | else | condition | recursion | string-method | basic | global | numeric | mutable | fabs-function | default-mutable-argument | loops | pep | debugging | class-decorators | list-slicing | memory | data-structure | assert | dictionary | operator-overloading | logical-operator | operator-or | data-structures-in-python | quantifiers-(*,-+,-?,-{}) | tuple-unpacking | working-with-file-paths | string-formatting | integers | python-history | built-in-modules | expression | asyncio-module | math | sys | type_conversion | arithmetic-expression | boolean | multiple-inheritance | map-function | while-loops | decorator | deep-copy | command-line-parsing | else-statement | while-and-for-loop | yield | encapsulation | decimal | exception-handling | unit-testing | goto-function | default-arguments | bitwise-operator | using-lists-as-stacks | thread-safe-data-structures-(queue.queue) | reading:-read(),-readline(),-readlines() | indexing:-loc-vs-iloc | anchors-(^,-$) | reading-and-writing-files | working-with-temporary-files-using-tempfile | indexing | touples | while-loop | sum() | using-join()-and-is_alive()-methods | list,-set,-and-dictionary-comprehensions | counter | module | nested-loop | exception-handling | function-and-scope | control-flow | operator | indentation | call | virtual-environment | sorted | class-and-inheritance | formal-and-actual-parameter | async | built-in-function | strings | print-statement | objects | constructor | single-inheritance | binary-operation | operators | test-discovery | binary | list-join | access-modifier | classes | regular-expression | syntaxerror | installation | parsing-with-strptime | oop | data-types | format | function-argument | identity-operators-(is,-is-not) | operations | operand | inheritance | string-iteration | lambda-functions | python-operators | lambda-function | keyword | oops | string-slicing | odd-number | print | python-module | slicing | random | defining-functions | list-method | escape-operator | sum-function | destructor | comprehension | syntax-error | string-methods | file-handling | datatype | string-concatenation | copy | regex | dictionaries | software-design | dataframe-and-series-objects | arbitrary-arguments-(*args,-**kwargs) | regular-expressions ...