API
def next(iterator, default=None): # real signature unknown; restored from __doc__
"""
next(iterator[, default])
Return the next item from the iterator. If default is given and the iterator
is exhausted, it is returned instead of raising StopIteration.
"""
pass
python中next()的具体的形式为:next(iterobject,defalt)
- 第一个参数是可迭代的对象
- 第二个参数可以写也可以不写,不写的时候,如果可迭代的元素取出完毕,会返回StopIteration异常,第二个参数写的时候,当可迭代对象迭代完后,会返回第二个参数写的那个元素。
通过调用 next(data_iterator)
,你可以获取迭代器的下一个数据项。迭代器是一种对象,它允许你逐个访问集合中的元素,而无需提前加载整个集合到内存中。使用迭代器可以节省内存并提高效率,特别是当处理大型数据集时。需要注意的是,如果迭代器已经达到了最后一个元素,再次调用 next
方法将会引发 StopIteration
异常。你可以使用 try-except
块来捕获这个异常并进行相应的处理。
1)未使用第二个可选参数
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break
输出:1,2,3,4,5
2)设置第二个可选参数值为-1
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
try:
# 获得下一个值:
x = next(it, -1)
print(x)
except StopIteration:
# 遇到StopIteration就退出循环
break
输出:1,2,3,4,5,-1,-1,-1,-1.............
data = next(data_iterator)
batch = data
loss = model.module._calc_loss(batch, outputs)