迭代器与生成器区别

迭代器基本方法有两个iter()方法,next()方法
迭代器是一个一个访问元素的
举个例子

impot  copy
a=[1,2,3]
b=[iter(a)]#创建迭代器对象
print(type(b))#输出b是什么类型
print(next(b))#输出迭代器下一个对象
print(next(b))
print(next(b))

得出结果
<class’set_iterator’>
1
2
3
代码第一句导入copy这个模块,第二句变量a=列表中【1,2,3】,第三句中的iter是iterator的简称,说明要迭代a这个列表,最后几句话就是说输出迭代后每个元素。

还有一种for in 写法,代码如下:

for  x   in a:
    print(x)

这个代码就是说把a中的元素依次递给x这个变量,
输出x。

生成器
在PYTHON中,生成器使用了yieid函数,被称为生成器。
举个例子

def hanshu(n):
    i=0
    while i<n:
        yield i
        i+=1
a=hanshu(1000)
print(next(a))        
print(next(a))
print(next(a))
print(next(a))

输出结果是
0
1
2
3
其中的yield 是放弃的意思,再次暂时性的交出控制权。
切记:
函数里有了yield后,执行到yield就会停住,当需要再往下算时才会再往下算。所以生成器函数即使是有无限循环也没关系,它需要算到多少就会算多少,不需要就不往下算。

斐波那契举个例子

def fbnq(n):
    a,b=0,1
    i=0
    while i<n:
        a,b=b,a+b
        yield a
        i+=1
f=fbnq(10)
for x in f:
    print(x) 

输出结果是
1
1
2
3
5
8
13
21
34
55

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值