Python Iterator

One of the maximum crucial ideas in Python is Iteration. Python iterator is an object which implements the iterator protocol, which consist of the methods __iter__() and __next__()Iterators and Iterables are also part of Iteration. Additionally, the information of iterables and iterators in Python could be very important. but these python ideas are a little bit complex to recognize. Iterables are objects that may be iterated in iterations.

Python Iterables

Iterable are those objects that can be easily looped over or they are iterated over with the help of a for a loop. Objects like lists, tuples, units, dictionaries, strings, and so on. are called iterables. Basically, in simpler words iterable is something that you can loop over or you can say that iterable is a box that has information or values and we carry out a generation over it to get elements one by one. (Can traverse thru all of the given values one by one). Iterablehas an in-constructed dunder method iter.

A less complicated way to determine whether or not an item is iterable is to check if it supports iter. Here we use the function named dir( ), which returns the list of attributes and strategies supported by way of an object, and through seeing all attributes and methods.

Python Iterators

An Iterator is an item representing a movement of information that produces a record cost at a time using the next() technique. In Python, an iterator is an object that simply implements the iterator protocol, as it normally consists of useful techniques such as iter() and next(). An iterator is an iterable item with a state so it recalls where it is at some point of the new release.

As an instance, Generator are those iterators that supply or return the information one element at a time. It plays the new release to get admission to the factors of the iterable one after the other because it continues the inner nation of elements. However, the iterator is aware of how to get the following price. we can also term iterators as Iterables.

Limitations of Iterators

1. We can handiest cross forward in an iterator.

2. We will make a copy of it.

3. No way to get the previous detail.

4. We can reset the iterator.

5. The iterator protocol handiest specifies the next() approach. Therefore, capabilities may additionally devour all the output of the iterator’s and in case you want to do something different. However with the same movement, then you’ll create a new iterator to work with.

Python Iterator Example

Below is an example of how iterators work.

mytuple = ("Boxing", "Wrestling", "Kung fu")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

Output

Boxing
Wrestling
Kung Fu

How to create Python Iterator.

To create an object/class as an iterator you have to implement the methods __iter__() and __next__() to your object.

The __next__() method also allows you to do operations, and must return the next item in the sequence.

Example

class MyNumbers:
  def __iter__(self):
    self.a = 11
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

Output

11
12
13
14
15

Python Generator

Python has a generator that permits you to create your iterator function. A generator is really a feature that returns an iterator item with a succession of values in preference to a single object. A yield assertion, therefore in place of a go-back statement, is used in a generator function. Even though a return declaration terminates a feature absolutely, a yield declaration pauses the characteristic at the same time. This is because storing all of its states and then continues from there on subsequent calls. Every Generator is therefore an Iterator. 

An iterator does now not need nearby variables. All it calls for is an iterable item to iterate on.