Python 的 next()函数不仅用于迭代器对象,还可处理飞迭代器任务。它返回可迭代对象的下一个元素岛并将指针移至下一个元素。这比简单的循环更复杂,但若需要对迭代过程有绝对控制,则非常有用。本文从简介到深入,帮助你全面理解 next()函数的使用方法。
我们都知道用for 循环和while 循环进行迭代。但你知道 Python 的 next() 函数吗?next() 也可用于迭代操作,让我们一起来探索一下。
# 简单的 for 循环进行迭代fruits = ['苹果', '橙子', '梨']for fruit in fruits: print(fruit)# 苹果# 橙子# 梨
fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()print(iterator) # <list_iterator object at 0x10adcb160>
若我们调用某个可迭代对象(比如列表、字典等)的 .__iter__() 方法,会得到一个迭代器对象。之后,该迭代器对象将和 next()函数一起用来迭代处理事物。
print([1, 2, 3].__iter__()) # <list_iterator object at 0x10b1c3010>print('你好'.__iter__()) # <str_ascii_iterator object at 0x10b1c3010>print({1: 2, 3: 4}.__iter__()) # <dict_keyiterator object at 0x10b1f7470>
上面演示了多种不同类型的迭代器对象。请注意,他们都可以与 next() 函数一同工作。
fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()x = next(iterator)print(x) # 苹果
当在迭代器对象上调用 next() 函数,它会:
fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()print(next(iterator)) # 苹果print(next(iterator)) # 橙子print(next(iterator)) # 梨
每次调用 next(iterator),就会返回迭代器中的下一个元素。
fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()print(next(iterator)) # 苹果print(next(iterator)) # 橙子print(next(iterator)) # 梨print(next(iterator))# Traceback (most recent call last):# File "/Users/lzl/Documents/repos/main/a.py", line 8, in <module># print(next(iterator)) ## ^^^^^^^^^^^^^^# StopIteration
当我们的迭代器迭代全部元素后,再试图 next(iterator),就会收到一个 StopIteration 异常。
fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()while True: try: x = next(iterator) print(x) # 或者你想做的其他操作 except: break
由于当到达可迭代对象的末尾(实质上是我们的列表末尾)时会触发 StopIteration 异常,此时需要使用 try except块来捕获该异常,并跳出 while 循环。
这显然比简单的 for 循环或 while 循环更麻烦。但是,如果想要对迭代过程有完全的控制,这可能会很有用。
def generate_number(): n = 1 while True: yield n n += 1generator = generate_number()print(generator)first = next(generator)second = next(generator)third = next(generator)print(first, second) # 1 2 3
如果我们只想从生成器对象中获取有限数量的对象时——这样,就不必处理生成前 N 个元素再使用 break 的逻辑了
Python 的 next()函数不仅用于迭代器对象,还可处理飞迭代器任务。它返回可迭代对象的下一个元素岛并将指针移至下一个元素。这比简单的循环更复杂,但若需要对迭代过程有绝对控制,则非常有用。本文从简介到深入,帮助你全面理解 next()函数的使用方法。
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-86999-0.htmlPython 编程速查:迅速理解 next() 函数
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: React 合成事件和 JavaScript 事件有什么区别?
下一篇: 16 个在面试前需要知道的系统设计概念