: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