Python next() method (original) (raw)
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))
`
Output
First 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)
:6 in
----> 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.
Example 5: Performance Comparison
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)
`
Output
next() 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.