1、迭代器
#1、迭代器
#特徵:
#訪客不需要關心迭代器內部的結構,只需透過next()方法不斷去取下一個內容
#進入一半時不能往回退
#可輕鬆迴圈比較大的資料集合,節省記憶體
>>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
2、生成器
一個函數呼叫時回傳一個迭代器,那這個函數就叫做生成器(generator);如果函數包含yield語法,那麼這個函數就會變成生成器;
def func(): yield 1 yield 2 yield 3 yield 4
上述程式碼中:func是函數稱為生成器,執行此函數func()時會得到一個迭代器。
>>> temp = func() >>> temp.__next__() 1 >>> temp.__next__() 2 >>> temp.__next__() 3 >>> temp.__next__() 4 >>> temp.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration#########3、實例###############a、利用生成器自訂range###############
def xrange(n): start = 0 print(start) while True: if start > n : return yield start start += 1 obj = xrange(4) n1 = obj.__next__() n2 = obj.__next__() n3 = obj.__next__() n4 = obj.__next__() n5 = obj.__next__() n6 = obj.__next__() print(n1,n2,n3,n4,n5,n6)######b、利用迭代器存取range######### ###
以上是python基礎之迭代器與生成器的詳細內容。更多資訊請關注PHP中文網其他相關文章!