# -*-coding:utf8-*-
a = {'xie', 'shi', 'yong'}
it = iter(a) # 迭代的初试地址
for i in it:
print(i, end=' ')
print()
it2 = a.__iter__() # 迭代的初始地址
for i in it2: # 在循环里自己调用了迭代器后移
print(i, end=' ')
print()
it2 = iter(a) # 此时it2已经到了尾部,要重新定义,没有这剧,后面不会输出
while True:
try:
print(it2.__next__(), end=' ')
except StopIteration:
print()
break
# 自定义的迭代器
class Nums:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a == 100:
raise StopIteration
x = self.a
self.a += 1
return x
num = Nums()
it = iter(num)
for i in range(10):
print(next(it), end=' ')
print()
for i in it:
print(i, end=" ")
print()
def fib(n):
"""
生成器 理解为生成一个序列,返回值是序列的首地址
:param n:
:return:
"""
a, b = 1, 1
for i in range(n):
yield a
a , b = b, a + b
f = fib(10)
for i in range(10):
print(next(f))