Level 5 : Filtering numbers in an iterator.


class FilterIterator:
    def __init__(self, data, condition):
        self.data = data
        self.condition = condition
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        while self.index < len(self.data):
            value = self.data[self.index]
            self.index += 1
            if self.condition(value):
                return value
        raise StopIteration

it = iter(FilterIterator([1, 2, 3, 4, 5, 6], lambda x: x % 2 == 0))
print(list(it))

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