Summary: in this tutorial, you’ll learn how to use the Python next()
function and how to use it to retrieve the next item from an iterator.
Introduction to the Python next() function
An iterator is an object that implements the iterator protocol which consists of two methods:
__iter__()
method that returns the iterator object itself.
method that returns the next item. If all items have been returned, the__next__()
method raises a__next__()
StopIteration
exception.
The next()
function get the next item from an iterator by calling its __next__()
method.
Here’s the syntax of the next()
function:
next(iterator[, default])
Code language: Python (python)
The next()
function has two parameters:
iterator
– this required argument specifies an iterator from which you want to retrieve the next item.default
– this is an optional argument. Thenext()
function returns the default if the iterator is exhausted; otherwise, it’ll raise aStopIteration
exception.
Python next() function examples
Let’s take some examples of using the next()
function.
1) Using Python next() function with an iterator example
The following example defines an iterator that returns a number of random numbers between min
and max
and uses the next()
function to get the next random number from the iterator:
from random import randint
def random_seq(min, max, size):
for _ in range(0, size):
yield randint(min, max)
random_numbers = random_seq(1, 100, 3)
r = next(random_numbers)
print(r)
r = next(random_numbers)
print(r)
r = next(random_numbers)
print(r)
Code language: Python (python)
How it works.
First, import the randint()
function from the built-in random module:
from random import randint
Code language: Python (python)
Second, define a generator that returns a number of random integers between min and max:
def random_seq(min, max, size):
for _ in range(0, size):
yield randint(min, max)
Code language: Python (python)
Third, call the random_seq function:
random_numbers = random_seq(1, 100, 3)
Code language: Python (python)
The random_numbers is a generator which is also an iterator.
Fourth, call the next()
function three times to get the next item from the random_numbers iterator:
r = next(random_numbers)
print(r)
r = next(random_numbers)
print(r)
r = next(random_numbers)
print(r)
Code language: Python (python)
It should display three random numbers between 1 and 100.
If you call the next()
function one more time, you’ll get a StopIteration exception:
r = next(random_numbers) # StopIteration
Code language: Python (python)
However, if you use a default value, the next()
function will return that value instead of raising the StopIteration exception:
r = next(random_numbers, None)
print(r) # None
Code language: Python (python)
2) Using Python next() function to skip heading when reading a csv file
The following example uses the built-in csv module to read the country.csv file with the following information:
import csv
with open('country.csv', encoding='utf8') as f:
csv_reader = csv.reader(f)
# skip the header
next(csv_reader)
# iterate over the data line
for line in csv_reader:
print(line)
Code language: Python (python)
How it works.
First, import the csv module:
import csv
Code language: Python (python)
Second, open the country.csv file and return the reader object from the csv.reader()
function. The reader object is an iterator.
with open('country.csv', encoding='utf8') as f:
csv_reader = csv.reader(f)
#...
Code language: Python (python)
Third, call the next()
function to retrieve the header from the csv_reader iterator:
next(csv_reader)
Code language: Python (python)
Finally, display all the data lines:
for line in csv_reader:
print(line)
Code language: Python (python)
Summary
- Use the Python
next()
function to get the next item from an iterator.