python迭代器是什么_python迭代器

迭代器

什么是迭代器?

迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束。迭代器只能往前不会后退。

使用迭代器的优点

​迭代器的一个大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时候才会计算该元素,而在这之前或者之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或者是无限的集合,比如几个G的文件,或者斐波那契数列等。

​迭代器另外一个优点是它提供了一个统一的访问集合的接口,只要定义了__iter__()方法的对象,都可以使用迭代器来访问。

next():访问迭代器的下一个元素

__iter__方法:返回迭代器对象本身

用一个斐波那契数列的case来看看:

def febonac(num)

a,b,n=1,0,0

while n

print(a)

b+=a

a,b=b,a

n+=1

febonac(5)

output:

1

1

2

3

5

这是没有使用迭代器来创建的一个斐波那契数列,可以看到它会直接打印前nun个数,可复用率低。

现在我们来使用迭代器生成一个斐波那契数列:

class Febonaci():

def __init__(self,num):

self.a,self.b,self.n=1,0,0

self.num=num

def __iter__(self):

return self

def __next__(self):

if self.n

self.b+=self.a

self.a,self.b=self.b,self.a

self.n+=1

return self.b

else:

raise StopIteration

f=Febonaci(5)

print(next(f))

print(next(f))

print(next(f))

print(next(f))

print(next(f))

output:

1

1

2

3

5

至此,一个简单的利用迭代器的斐波那契数列就写成了,可以看出这样写能够节省尽可能多的内存,不用一上来就创建一块大内存用来创建斐波那契数列,每次调用的时候,它才会生成下一个数。

对于内置的一些函数,像列表、元祖,我们可以用内置函数iter获取迭代器对象:

b=[1,2,3,4,5]

it=iter(b) #利用iter()方法获取迭代器对象

next(it) #利用next()方法获得下一个值

next(it)

output:

1

2

如果你拥有一个无线长的数列,那么你可以无限next()。为了防止迭代器越界,你可以加入StopIteration用来提醒越界了。在python中,for循环的作用实际上是创建了一个迭代器,并且为每个循环调用了next()方法。还可以捕捉StopIteration错误。

b=[1,2,3,4,5]

for i in b:

print(i)

___________________________________

output:

1

2

3

4

5

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值