1.什麼是迭代?
從乙個資料集合中按照一定的順序,不斷的取出資料的過程
2.迭代和遍歷的區別?
迭代強調的依次取出,不能確定可以取出的值有多少,也不能保證去把資料全部取完
遍歷必須保證資料的長度,迴圈不斷的全部取出,針對於資料量過大的情況下使用遍歷,需要時間過長
3.迭代器
對迭代過程的封裝,通常表現為物件的資料形式(也可以使用陣列),不同語言中,表現出了的迭代形式不一樣
4.迭代模式
一種程式設計設計模式,用於同一迭代的過程,並且規範迭代器的格式
function
iterator
(arr)
this
.i++
;return result;}}
}var arr1=[1
,2,3
,4,5
,6];
let it=
iterator
(arr1)
;
只要知道迭代器需要滿足的條件,寫乙個原生迭代器還是非常簡單的
最終在控制台中呼叫.next()方法輸出的結果為:
如果用while()迴圈可以讓迭代器自己取資料,直到沒有資料為止
const arr =[1
,2,3
,4,5
]const iterator =
this
.i ++
;return result;}}
console.
log(iterator)
// 讓迭代器自己取資料,直到沒有資料為止
let data = iterator.
next()
;while
(!data.done)
console.
log(
"迭代完成"
);
在es6中如果物件具有知名符號屬性symbol.iterator,則表示該物件可以迭代
const arr =
[464
,878,88
,22,45
,4,8
,7]// // 在es6中如果物件具有知名符號屬性symbol.iterator,則表示該物件可以迭代
console.
log(arr)
const iterator = arr[symbol.iterator]()
;//es6之後,陣列可以直接建立迭代物件
console.
log(iterator.
next()
);// console.
log(iterator.
next()
);// console.
log(iterator.
next()
);// console.
log(iterator.
next()
);console.
log(iterator.
next()
);console.
log(iterator.
next()
);console.
log(iterator.
next()
);console.
log(iterator.
next()
);
使用es6中的知名符號symbol.iterator可以直接建立乙個迭代物件,通過呼叫迭代物件的next()方法,可以直接迭代陣列中的資料
3.1、使用迭代器生成斐波那契數列
下面我們就使用迭代器來自定義自己的乙個斐波那契數列組,我們直到斐波那契數列有兩個執行前提,第乙個前提是初始化的前兩個數字為0,1,第二個前提是將來的每乙個值都是前兩個值的和。這樣我們的目標就是每次都迭代輸出乙個新的值。
迭代器(高階)
此示例示意將自定義的類建立的物件製作成為可迭代物件 class mylist 這是乙個自定義的列表型別,此型別的物件是 用data屬性繫結的列表來儲存資料 def init self,iterable self.data x for x in iterable def repr self retur...
迭代器超詳細攻略
寫的很墨跡,將就看。首先 理解 for 迴圈 for i in 1,2,3,4 print i 這個是正常 如果 for 迴圈乙個 1234 會報錯,因為 int 不是乙個 iterable 型別 iterable 字典裡的意思是 可迭代的,可重複的 可迭代的物件 字串str 列表 list 元組 ...
python迭代器高階
我們之前簡單的了解了一下迭代器,本篇,我們來看看迭代器具體的使用方法吧!lst 1 2,3 4 import dis 引入標準庫dis,用它觀察for迴圈的細節。dis.dis for i in lst pass 1 0 setup loop 12 to 14 2 load name 0 lst 4...