Level 1 : Implementing an iterator that returns prime numbers.


class PrimeIterator:
    def __init__(self, n):
        self.n = n
        self.num = 1

    def __iter__(self):
        return self

    def __next__(self):
        self.num += 1
        while any(self.num % i == 0 for i in range(2, int(self.num ** 0.5) + 1)):
            self.num += 1
        if self.num > self.n:
            raise StopIteration
        return self.num

it = iter(PrimeIterator(10))
print(list(it))

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