一直以來迭代器和生成器都是很神祕的,聽起來就感覺很難,今天正好看到,打算寫一下,記錄一下。
1.迭代器
迭代器是訪問集合元素的一種方式,迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問結束,但是整個過程只能前進不能後退,一直到全部的元素被訪問結束。另外,迭代器的特點是不需要所有的元素全部準備好纔開始,只要到這個元素之前獲取這個元素就可以,這樣可以遍歷一些大的數據和集合。
特點:(借鑑了其他人的內容):
1.訪問者不需要關心迭代器內部的結構,僅需要通過next() 方法不斷去取下一個內容
2.不能隨機訪問集合中的某個值,只能從頭到尾依次訪問
3.訪問到一半的時候不能往回退
4.便於循環比較大的數據集合,節省內存
貼上我的代碼段:
2.生成器
一個函數調用時返回一個迭代器,那麼這個函數就叫做生成器(generator),如果函數中包含yield語法,那這個函數就會變成生成器。
func() 稱之爲生成器,執行這個函數的時候會生成迭代器。
實例: