Python3菜鳥教程(9):迭代器和生成器的使用
阿新 • • 發佈:2019-01-10
# -*-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))