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