Level 5 : What happens when the following code is executed?


class CustomIterator:
    def __init__(self, values):
        self.values = values
        self.index = len(values)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index -= 1
        return self.values[self.index]

it = CustomIterator(["A", "B", "C"])
print(list(it))
print(list(it))

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