Skip to main content

Python Iterators


In this tutorial you will learn:

  • Iterators
  • Iterators in Python
  • Developing your own Iterator

Iterator

We use iterator when we want to go through all elements of collection. It doesn’t need a specific collection or data type, it works irrespective of implementation.

Iterators in Python

Iterator is an object in Python it implements the iterator protocol. A protocol is something that defines some methods and any class implementing that protocol must implement those methods. In Python the iterator protocol requires two fuctions to be implemented one is the __iter__ function and the other function is the next() function. Iterator object will be returned by the iter function and the next element must be returned by the next function.

Example:

  1. st = "Python"
  2. val = iter(st)
  3. print('First letter is: ',next(val))
  4. print('Second letter is:',next(val))
  5. print('Third letter is: ',next(val))
  6. print('Fourth letter is:',next(val))
  7. print('Fifth letter is: ',next(val))
  8. print('Sixth letter is: ',next(val), '\n')

Here we can see that the after passing the value to iter we can simply print the values using the next function. Let's look at another example.

  1. list = ["Python","Testing", 5]
  2. val = iter(list)
  3. print(next(val))
  4. print(val.__next__())
  5. print(val.__next__(), '\n')

In this example we are using next function with the iterator name which is similar to calling next function and then passing the iterator.

Developing your own Iterator

In order to develop your own iterator you need to implement the iterator protocol and it requires __iter__ and __next__ methods. Iter function is used to initialize the values and returns iterator object. Next function returns the very next value that comes in a list or sequence.

Example
In this example we will create an iterator which will return the number with the power of two on every next iteration.

  1. class Power:
  2. def __iter__(self):
  3. self.num = 0
  4. return self

Here we created a power class and added the required __iter__ function. But we need to write another function which is the next function.
  1. def __next__(self):
  2. result = 2 ** self.num
  3. self.num+=1
  4. return result

Now let's use our newly developed iterator to get the value of two raised to the power number starting from 0.
  1. power = Power()
  2. it = iter(power)
  3. print('2 raised to the power 0 :',next(it))
  4. print('2 raised to the power 1 :',next(it))
  5. print('2 raised to the power 2 :',next(it))
  6. print('2 raised to the power 3 :',next(it))

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Add new comment

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.