python笔记-迭代器与生成器01

本文详细介绍了Python中的迭代器和生成器,包括手动遍历迭代器、代理迭代、使用生成器创建新迭代模式以及如何跳过可迭代对象的开始部分。文中通过实例展示了如何操作迭代器,如何在自定义容器上实现迭代,以及如何利用itertools模块的dropwhile和islice函数来跳过迭代的特定部分。
摘要由CSDN通过智能技术生成


前言

迭代是 Python 最强大的功能之一。初看起来,你可能会简单的认为迭代只不过是处理序列中元素的一种方法。然而,绝非仅仅就是如此,比如创建你自己的迭代器对象,在 itertools 模块中使用有用的迭代模式,构造生成器函数等等。


1. 手动遍历迭代器

在不适用for循环的情况下,如何遍历一个可迭代对象的所有元素呢?

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

def manual_iter():
	with open('/etc/passwd') as f:
	try:
		while True:
			line = next(f)
			print(line, end='')
	except StopIteration:
pass

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

with open('/etc/passwd') as f:
	while True:
		line = next(f, None)
		if line is None:
			break
		print(line, end='')

大多数情况下,我们会使用 for 循环语句用来遍历一个可迭代对象。但是,偶尔也需要对迭代做更加精确的控制,这时候了解底层迭代机制就显得尤为重要了。下面的交互示例向我们演示了迭代期间所发生的基本细节

>>> items = [1, 2, 3]
>>> # Get the iterator
>>> it = iter(items) # Invokes items.__iter__()
>>> # Run the iterator
>>> next(it) # Invokes it.__next__()
1
>>> next(it)
2
>>> next(it)
3
>>> next(it)
Traceback (most recent call last):
File 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天骄书虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值