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