python 迭代器

迭代器实际上就是 Java 中的 Iterator,这个很好理解,其实就是挨个访问元素,去遍历整个容器。

例如,迭代字符串

for c in "String":
	print(c)

迭代文件的每一行

f = open("file.txt","rt")
for line in f:
	print(line)

迭代字典:

for key in dicts:
	print(key,"->",dicts[key])

那么这些循环在底层他们所触发的就是迭代器。
python提供了两个魔法方法(内置函数)。
当我们调用 iter( 容器 ) 和 next( 迭代器 ) 这两个方法
举个例子

strs = "Strings"
#获得strs的迭代器
it = iter(strs)
#访问下一个元素
next(it)
#当没有下一个元素可以访问时,
#就会抛出 StopIteration 异常

那么完整版的写法应该是这样

it = iter(strs)
while True:
	try:
		item = next(it)
	except StopIteration:
		break
	print(item)

或者

it = iter(strs)
i = 0
while i < len(strs):
	item = next(it)
	print(item)
	i++

iter() 方法,返回这个类的迭代器,next() 方法是决定如何遍历此对象的关键。

我们来实现一个斐波那契数列的迭代器。

class Fib:
	def __init__(self):
		self.f1 = 0
		self.f2 = 1
	
	def __iter__(self):
		return self
	
	def __next__(self):
		self.a , self.b = self.b,self.a+self.b
		return self.a
fibs = Fib()
#触发迭代器,但是这个循环时无限循环
for item in fibs:
	print(item)

#只获得前10个
it = iter(fibs)
for i in range(10):
	print(next(it))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值