關於迭代的理解

2021-09-04 11:32:06 字數 949 閱讀 1786

參考自  

參考自  

參考自  

迭代:迭代的使用場景: 陣列的資料量很大

迭代是迴圈的一種方式, 逐個訪問列表的某一項, 能夠迴圈輸出陣列中所有的元素

迭代只能對應集合,列表,陣列等。不能對執行**進行迭代.

迭代是重複的活動,其目的通常是為了逼近結果。每一次對過程的重複稱為一次「迭代」,而每一次迭代得到的結果會作為下一次迭代的初始值。

簡單地講,yield 的作用就是把乙個函式變成乙個 generator,帶有 yield 的函式不再是乙個普通函式,python 直譯器會將其視為乙個 generator,呼叫 fab(5) 不會執行 fab 函式,而是返回乙個 iterable 物件!在 for 迴圈執行時,每次迴圈都會執行 fab 函式內部的**,執行到 yield b 時,fab 函式就返回乙個迭代值,下次迭代時,**從 yield b 的下一條語句繼續執行,而函式的本地變數看起來和上次中斷執行前是完全一樣的,於是函式繼續執行,直到再次遇到 yield。

乙個帶有 yield 的函式就是乙個 generator,它和普通函式不同,生成乙個 generator 看起來像函式呼叫,但不會執行任何函式**,直到對其呼叫 next()(在 for 迴圈中會自動呼叫 next())才開始執行。雖然執行流程仍按函式的流程執行,但每執行到乙個 yield 語句就會中斷,並返回乙個迭代值,下次執行時從 yield 的下乙個語句繼續執行。看起來就好像乙個函式在正常執行的過程中被 yield 中斷了數次,每次中斷都會通過 yield 返回當前的迭代值。

當函式執行結束時,generator 自動丟擲 stopiteration 異常,表示迭代完成。在 for 迴圈裡,無需處理 stopiteration 異常,迴圈會正常結束。

生成器執行值序列時允許序列中的每乙個值只在需要時才計算,而不是像傳統列表那樣,一定要提前計算列表中所有的值。在恰當的地方使用生成器能節省大量的記憶體。生成器擅長處理需要計算得出的數列,比如斐波那契數列。

理解迭代器

在學習c stl的時候,整天碰到迭代器,也整天用,但是,到底它是個什麼東西,很多人沒有乙個認識。這裡我通過幾個小的demo,來看看迭代器。首先我實現了乙個十分簡陋的vector類 cpp template class vector t begin void insert t d typedef t ...

adaboost迭代次數的理解

對於adaboost演算法而言,迭代幾次就產生幾個基本分類器,當然分類器的個數越多分類的精度越高。那麼怎麼確定迭代的次數呢,在我的理解而言,之所以設定迭代次數,是因為當資料量很大的時候,如果還想讓模型保持極高的精度,那麼所消耗的時間也一定很久,所以為了保證精度的同時保證演算法效率,那麼在程式的迭代的...

理解Python的迭代器

首先,廖雪峰老師的教程中解釋了迭代器和生成器,這篇文章只是補充和我個人的總結。可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以被next 函式呼叫並不斷返回下乙個值的物件稱為迭代器 iterator 所有的iterable均可以通過內建函式iter 來轉變為iterator。對...