The next() function returns the next item from an iterator. If there are no more items, it raises a StopIteration error, unless you provide a default value. It is useful when you want to get items one by one manually.
Note: next() is ideal for unknown-length iterators or when a default value is needed. For known-length sequences, for loops are faster and simpler.
Example:
Python
lst = [1, 2, 3]
it = iter(lst)
print(next(it))
Explanation:
- lst is a list of items.
- it = iter(lst): creates an iterator over the list.
- next(it): returns the first item (1) from the iterator.
Syntax
next(iterator, default)
Parameters:
- iterator: An iterator object to get the next item from.
- default: (Optional) Value returned if the iterator is exhausted. If not provided, StopIteration is raised.
Return: The next element from the iterator or the default value.
Example 1: Iterating a List Using next()
This example shows how to iterate over a list using next(). Using a default value prevents the StopIteration exception when the iterator is exhausted.
Python
lst = [1, 2, 3]
it = iter(lst)
while True:
item = next(it, "end")
if item == "end":
break
print(item)
Explanation:
- iter(lst): creates an iterator from the list.
- next(it, "end"): fetches the next item or "end" if there are no more items.
Example 2: Getting the Next Item from an Iterator
Here, next() is called sequentially to retrieve elements one by one.
Python
lst = [1, 2, 3, 4, 5]
it = iter(lst)
print("First item in List:", next(it))
print("Second item in List:", next(it))
OutputFirst item in List: 1
Second item in List: 2
Explanation:
- Each call to next(it) returns the next element of the iterator.
- The iterator remembers its current position, so successive calls continue from the last element.
Example 3: Using a Default Value with next()
Passing a default value ensures that a custom message or value is returned instead of raising a StopIteration error.
Python
lst = [1]
it = iter(lst)
print(next(it))
print(next(it, "No more element"))
Explanation:
- The first call returns the only element.
- The second call returns "No more element" because the iterator is exhausted.
Example 4: StopIteration Exception
Calling next() beyond the iterator's length without a default value raises a StopIteration exception.
Python
it = iter([1, 2])
print("Next Item:", next(it))
print("Next Item:", next(it))
print("Next Item:", next(it))
Output
Next Item: 1
Next Item: 2
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-1>:6 in <module>
----> 6 print("Next Item:", next(it))
StopIteration
While calling out of the range of the iterator then it raises the Stopiteration error, to avoid this error we will use the default value as an argument.
Explanation:
- print("Next Item:", next(it)): The first two calls fetch elements normally.
- The third call raises StopIteration because the iterator has no more items.
- To avoid this, always provide a default value when unsure of the iterator size.
next() allows fine control of iteration but is slower than a Python for loop when iterating over known sequences.
Python
import timeit
setup = "lst = list(range(1000))"
t1 = timeit.timeit(
"it = iter(lst)\n"
"while True:\n"
" x = next(it, None)\n"
" if x is None: break",
setup=setup,
number=5
)
t2 = timeit.timeit(
"for _ in lst: pass",
setup=setup,
number=5
)
print("next() time:", t1)
print("for loop time:", t2)
Outputnext() time: 0.00021808600013173418
for loop time: 4.387100011626899e-05
Explanation:
- setup creates a list of 1000 numbers.
- t1 measures the time to iterate using iter() + next() inside a while loop.
- t2 measures the time to iterate using a normal for loop.
- Both tests run 5 times.
Applications:
- Iterating over iterators when the container size is unknown.
- Controlling iteration flow with default values.
- Safely handling exhausted iterators without exceptions.
Related Articles:
Explore
Python Fundamentals
Python Data Structures
Advanced Python
Data Science with Python
Web Development with Python
Python Practice