当前位置:首页 > 科技  > 软件

Python 编程速查:迅速理解 next() 函数

来源: 责编: 时间:2024-05-07 09:11:14 263观看
导读Python 的 next()函数不仅用于迭代器对象,还可处理飞迭代器任务。它返回可迭代对象的下一个元素岛并将指针移至下一个元素。这比简单的循环更复杂,但若需要对迭代过程有绝对控制,则非常有用。本文从简介到深入,帮助你全面

Python 的 next()函数不仅用于迭代器对象,还可处理飞迭代器任务。它返回可迭代对象的下一个元素岛并将指针移至下一个元素。这比简单的循环更复杂,但若需要对迭代过程有绝对控制,则非常有用。本文从简介到深入,帮助你全面理解 next()函数的使用方法。D1n28资讯网——每日最新资讯28at.com

D1n28资讯网——每日最新资讯28at.com

迭代器初识

我们都知道用for 循环和while 循环进行迭代。但你知道 Python 的 next() 函数吗?next() 也可用于迭代操作,让我们一起来探索一下。D1n28资讯网——每日最新资讯28at.com

# 简单的 for 循环进行迭代fruits = ['苹果', '橙子', '梨']for fruit in fruits:    print(fruit)# 苹果# 橙子# 梨

简介 —— 迭代器对象

fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()print(iterator)  # <list_iterator object at 0x10adcb160>

若我们调用某个可迭代对象(比如列表、字典等)的 .__iter__() 方法,会得到一个迭代器对象。之后,该迭代器对象将和 next()函数一起用来迭代处理事物。D1n28资讯网——每日最新资讯28at.com

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() 函数一同工作。D1n28资讯网——每日最新资讯28at.com

next() 函数

fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()x = next(iterator)print(x)  # 苹果

当在迭代器对象上调用 next() 函数,它会:D1n28资讯网——每日最新资讯28at.com

  • 返回可迭代对象中的下一个元素
  • 将迭代器的指针移动到下一个元素
fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()print(next(iterator))  # 苹果print(next(iterator))  # 橙子print(next(iterator))  # 梨

每次调用 next(iterator),就会返回迭代器中的下一个元素。D1n28资讯网——每日最新资讯28at.com

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 异常。D1n28资讯网——每日最新资讯28at.com

使用 next() 迭代处理

fruits = ['苹果', '橙子', '梨']iterator = fruits.__iter__()while True:    try:        x = next(iterator)        print(x)  # 或者你想做的其他操作    except:        break

由于当到达可迭代对象的末尾(实质上是我们的列表末尾)时会触发 StopIteration 异常,此时需要使用 try except块来捕获该异常,并跳出 while 循环。D1n28资讯网——每日最新资讯28at.com

为什么要这么做呢?

这显然比简单的 for 循环或 while 循环更麻烦。但是,如果想要对迭代过程有完全的控制,这可能会很有用。D1n28资讯网——每日最新资讯28at.com

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 的逻辑了D1n28资讯网——每日最新资讯28at.com

结论

Python 的 next()函数不仅用于迭代器对象,还可处理飞迭代器任务。它返回可迭代对象的下一个元素岛并将指针移至下一个元素。这比简单的循环更复杂,但若需要对迭代过程有绝对控制,则非常有用。本文从简介到深入,帮助你全面理解 next()函数的使用方法。D1n28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-86999-0.htmlPython 编程速查:迅速理解 next() 函数

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: React 合成事件和 JavaScript 事件有什么区别?

下一篇: 16 个在面试前需要知道的系统设计概念

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • iPhone卖不动了!苹果股价创年内最大日跌幅:市值一夜蒸发万亿元

    8月5日消息,今天凌晨美股三大指数高开低走集体收跌,道指跌0.41%;纳指跌0.36%;标普500指数跌0.52%。热门科技股也都变化极大,其中苹果报181.99美元,跌4.8%,创
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • iQOO Neo8系列新品发布会

    旗舰双芯 更强更Pro
  • SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘是西部数据发布的最新一代WD Blue系列的固态硬盘,不仅闪存技术更为精进,性能也得到了进一步的跃升。WD Blue SN570 NVMe SSD的包装外
Top