要掌握迭代器和生成器,首先要理清這幾個概念:
iterable: 這個是可迭代對象,屬於python的名詞,範圍也很廣,可重複迭代,也就是迭代器。例:list,strpython
iterator: 迭代器對象,也屬於python的名詞,只有next方法可用函數
generator:生成器,使用了yield的函數稱爲生成器。在調用生成器運行的過程當中,每次遇到 yield 時函數spa
會暫停並保存當前全部的運行信息,返回yield的值。並在下一次執行 next()方法時從當前位置繼續運行。code
iter().返回迭代器自己 對象
next().返回下一個迭代值 //迭代器兩大方法blog
例:ci
#!/usr/bin/python3 import sys
list=[1,2,3,4]
it = iter(list) # 建立迭代器對象 # it就是迭代器對象,而list是迭代器 while True: try: print (next(it)) except StopIteration: sys.exit()
#!/usr/bin/python3 import sys def fibonacci(n): # 生成器函數 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return #return後爲空表示結束函數的執行 yield a a, b = b, a + b counter += 1 f = fibonacci(10) # f 是一個迭代器,由生成器返回生成 while True: try: print (next(f), end=" ") except StopIteration: sys.exit()