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