零基础小白的python学习笔记之类和类对象(八)迭代器

1迭代器有哪些:for循环,字典等

cats = {'猫妈妈的第一胎':'生了五只小猫',\
	'猫妈妈的第二胎':'生了四只小猫',\
	'猫妈妈的第三胎':'生了三只小猫咪~'}
>>> for each in cats:
	print("%s->%s"%(each,cats[each]))
	
猫妈妈的第一胎->生了五只小猫
猫妈妈的第二胎->生了四只小猫
猫妈妈的第三胎->生了三只小猫咪~

2.所用方法:
iter() :迭代器
next():返回下一个值

list = ['猫妈妈','花臂','小黄','橘橘']
>>> it = iter(list)
>>> next(it)
'猫妈妈'
>>> next(it)
'花臂'
>>> next(it)
'小黄'
>>> next(it)
'橘橘'
>>> next(it)
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    next(it)
StopIteration

it就是一个迭代器,调用next方法来返回值,一直到迭代器中没有值可以返回。
还可以用异常捕获的方法:

while 1:
	try:
		each = next(it)
	except StopIteration:
		break
	print(each)

	
猫妈妈
花臂
小黄
橘橘

p.s以上用的try…except+错误名的结构
3.类里面的迭代方法:

__iter__()
__next__()

以下用迭代器写一个斐波那契数列:

class Fibs:
	def __init__(self):
		self.a = 0
		self.b = 1
	def __iter__(self):
		return self
	def __next__(self):
		self.a,self.b = self.b,self.a + self.b
		return self.a	
>>> fibs = Fibs()
>>> for each in fibs:
	if each < 48:
		print(each)
	else:
		break
	
1
1
2
3
5
8
13
21
34

或者是:

class Fibs:
	def __init__(self):
		self.a = 0
		self.b = 1
		self.n = 20
	def __iter__(self):
		return self
	def __next__(self):
		self.a,self.b = self.b,self.a + self.b
		if self.a > self.n:
			raise StopIteration
		return self.a
	
>>> fibs = Fibs()
>>> for each in fibs:
	print(each)

1
1
2
3
5
8
13

P.S.raise的作用:触发报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值