说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数可以从迭代器中检索下一项,如果给定默认值,则在迭代器耗尽时返回此默认值,否则将引发 StopIteration 异常。
它可以迭代可迭代对象:
my_list = [1, 2, 3]
it1 = iter(my_list)
next(it1) # 1
next(it1) # 2
next(it1) # 3
next(it1) # StopIteration:
也可以给定一个默认值,如果迭代完则返回这个默认值:
it2 = iter(range(3))
next(it2, 99) # 0
next(it2, 99) # 1
next(it2, 99) # 2
next(it2, 99) # 99
它的语法是:
next(iterator[, default])
有两个参数:
作用是从迭代器返回下一项。如果给定了默认值,并且迭代器已耗尽,则返回它,而不是引发 StopIteration。
关于迭代操作以及迭代器、生成器,可以参考教程:Python 的迭代。
对于一个对象,要支持 next() 函数,需要在内部实现 __next__()
特殊方法。
可以参考教程:Python 迭代器类型。
以下利用默认值判断迭代是否耗尽,仅用于理解学习。
it = iter([1, 2, 3])
while True:
x = next(it, 'NO')
print(x)
if x == 'NO':
break
# 优化
NO = object()
it = iter([1, 2, 3])
while True:
x = next(it, NO)
print(x)
if x is NO:
break
正确的方法应该是:
it = iter([1, 2, 3])
while True:
try:
x = next(it)
print(x)
except StopIteration:
print('Over')
break
更新时间:May 17, 2022, 9:01 a.m. 标签:python next 迭代