4.1手动遍历迭代器

本文介绍了如何在不使用for循环的情况下遍历可迭代对象,通过调用next()函数并捕获StopIteration异常来实现手动迭代。示例展示了如何读取文件中的所有行,并提供了在迭代结束时通过返回特定值(如None)来控制流程的方法。了解这些底层迭代机制对于在某些场景下对迭代进行精确控制至关重要。
摘要由CSDN通过智能技术生成

问题:

​ 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环

解决方案:

​ 为了手动的遍历可迭代对象,使用next()函数并在代码中捕获StopIterable异常。比如,下面的例子手动读取一个文件中的所有行:

def manual_iter():
    with open(r'D:\study\workspace\python学习\python3高级\第二章:字符串和文本\2-1使用多个界定符分隔字符串.py') as f:
        try:
            while True:
                line = next(f)
                print(line, end='')
        except StopIteration:
            pass


manual_iter()

​ 通常来讲,StopIterable用来指示迭代的结尾。然而,如果你手动使用上面演示的next()函数的话,你还可以通过返回一个指定值来标记结尾。比如None,下面是示例:

  while True:
            line = next(f, None)
            if line is None:
                break
            print(line, end='====')

讨论:

​ 大多数情况下,我们会使用for循环语句用啦变量一个可迭代对象,但是,偶尔也需要对迭代做更加精确的控制,这时候了解底层迭代机制就显得尤为重要了。

下面的交互示例向我们演示了迭代期间所发生的基本细节

items=[1,2,3]
it=iter(items)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
'''
, line 31, in <module>
    print(next(it))
StopIteration

'''

本章接下来几小节会更深入的讲解迭代相关技术,前提是你先要理解基本的迭代协议机制,确保你已经把这章的内容牢牢记在心中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值