Python: 初步理解 迭代器,生成器

:1:iter 迭代器

a=[1,2,3]
b=iter(a)
print(next(b)) #打印迭代器里的值
print(next(b))
print(next(b))
print(b)  #打印迭代器  <list_iterator object at 0x0000000001DBB160>

输出:
1
2
3
<list_iterator object at 0x0000000001DCA2E8>

2:生成器 #需要在函数及循环语句里

def hanshu(n):
    i=0
    while i<n:
        yield i
        i+=1
a=hanshu(1000)
print(a)     #打印生成器 <generator object hanshu at 0x00000000021F93B8>
print(next(a))  #可以遍历出来
print(next(a))
print(next(a))
print(next(a))

输出:
<generator object hanshu at 0x00000000021F93B8>
0
1
2
3
例:不用递归的斐波那契

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

输出:
<class ‘generator’>
1
1
2
3
5
8
13
21
34

猜你喜欢

转载自blog.csdn.net/aixiangnan/article/details/88938112
今日推荐