Python next() 语法
next() 是 Python 的一个内置函数,它用于获取迭代器的下一个元素。小伙伴们一定要搞清楚:所谓的 “迭代器”,准确来说应该叫 “迭代器对象”,它本质上也是一个对象。
语法:
next(iterator, default)说明:
next() 函数接收以下 2 个参数。
iterator(必选):是一个迭代器对象。如果是非可迭代对象,需要先通过 iter() 进行转换。default(可选):表示没有更多元素时要返回的值。如果不提供 default 参数,那么在没有更多元素时,next() 函数会引发 StopIteration 异常。
提示:
- next() 只能用于迭代器对象。如果尝试对一个普通的可迭代对象(如列表、字符串)直接调用 next(),则会引发 TypeError 异常。我们需要先使用 iter() 函数将其转换为迭代器对象,才能正常调用 next() 。
- 一旦迭代器返回了所有元素,它就会 “耗尽” 并且无法再次使用。如果你需要重新遍历,通常需要重新获取一个迭代器(比如再次调用 iter()、或重新创建原始可迭代对象等)。
Python next() 摘要
| 使用频率 | 中 |
|---|---|
| 官方文档 | 查看 |
| 相关函数 | iter()、aiter()、anext() |
Python next() 示例
接下来,我们通过几个简单的例子来讲解一下 Python next() 函数是如何使用的。
注意: 由于绿叶网的 Python 在线编译器本身存在局限性,即如果测试代码报错,则只会返回报错信息(而不会返回其他结果)。因此为了得到更准确的结果,请小伙伴们在本地编辑器中测试本节示例代码。
示例 1:next() 基本用法
colors = ['红', '绿', '蓝']
it = iter(colors)
print(next(it))
print(next(it))
print(next(it))
print(next(it))运行结果如下。
红
绿
蓝
(报错)StopIteration分析:
next() 的参数要求是一个迭代器,因此首先需要使用 iter() 函数或 __iter__() 方法来获取可迭代对象对应的迭代器。
当迭代器没有更多元素时,如果再对其使用 next() 函数,则会抛出 StopIteration 异常。
示例 2:next() 带 default 参数
colors = ['红', '绿', '蓝']
it = iter(colors)
print(next(it, '没有更多了'))
print(next(it, '没有更多了'))
print(next(it, '没有更多了'))
print(next(it, '没有更多了'))运行结果如下。
红
绿
蓝
没有更多了分析:
如果 next() 函数提供 default 参数,则当迭代器没有更多元素时,如果再对其使用 next() 函数,则会输出 default 的值。
next() 函数 和 __next__() 方法
想要获取迭代器的下一个元素,除了 next() 函数之外,我们还可以使用 __next__() 方法。两者的功能是等价的,只是语法不一样而已。
示例 3:next() 函数
animals = ['ant', 'bee', 'cat']
it = iter(animals)
print(next(it))
print(next(it))
print(next(it))
print(next(it))运行结果如下。
ant
bee
cat
(报错)StopIteration示例 4:__next__() 方法
animals = ['ant', 'bee', 'cat']
it = iter(animals)
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())运行结果如下。
ant
bee
cat
(报错)StopIteration