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