Python next() 函数

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

上一篇: iter()

下一篇: aiter()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号