迭代器和生成器

2021-10-07 19:29:42 字數 2402 閱讀 1579

什麼是迭代:

從乙個資料集合中按照一定的順序,不斷地取出資料的過程叫做迭代。

迭代和遍歷的區別:

迭代針對依次取出,不確定取出的資料是多少,不確定要去除的資料有多少,遍歷要知道資料集合的長度,不斷的全部取出資料。

什麼是迭代器:

對迭代過程的一種封裝,通常封裝為物件的資料形式,不同的語言中,表現出來的迭代形式也是不一樣的

迭代模式:

一種設計模式,用於統一迭代的過程,並且會規範代器的規格

迭代器滿足的條件:

1.迭代器有得到資料集合中下乙個資料的能力

2.判斷是否有後續資料的能力

//寫法規範

const obj =

}}

例子:

const arr =[1

,5,6

,8,23

,7,8

];const iterator =

this

.i++

;return result;}}

// 讓迭代器自己取出資料

let data = iterator.

next()

;while

(!data.done)

console.

log(

"迭代完成"

)

//建立乙個迭代器的函式

function

createiterator

(arr)

i++;return result;}}

}const iter1 =

createiterator

(arr1)

const iter2 =

createiterator

(arr2)

迭代器可以迭代陣列與類陣列

//陣列

const arr =[55

,52,44

,742,75

,1]// //物件具有屬性 symbol.iterator,則表示物件可以使用迭代

const iterator = arr[symbol.iterator]()

;//直接建立迭代物件

for(

let i =

0; i < arr.length;i ++

)//類陣列

const divs = document.

getelementsbytagname

("div");

console.

log(divs)

;let result = iterator.

next()

;while

(!result.done)

//for of 專門遍歷可迭代的物件

for(

let item of arr)

如果乙個物件中沒有symbol.iterator屬性,可以直接誒在物件中寫入這個屬性,也可以完成迭代。

const obj =

, done : i >= keys.length

}i++

;return result;}}

}}//擴充套件運算子可用作可迭代物件,迭代物件中的內容直接新增至陣列中

function

test

(a,b,c)

test

(...obj)

什麼是生成器:

生成器就是通過建構函式generator建立出來的乙個物件,這個物件即是迭代器,同時也是乙個可迭代的物件。

function

*test()

const generator =

test()

; generator.

next

()

使用next方法會返回乙個物件,這個物件就是乙個迭代器物件,物件中的value值就是yield後面跟的值.

注意點:

async和*不能同時加在乙個函式上,因為同時起函式修飾符的作用

生成器中的關鍵字yield 只能在函式內部使用,表示產生乙個迭代資料

每一次呼叫生成器的next方法,會將生成器函式執行帶yield關鍵字位置

生成器的返回值,出現在最後一次的done為ture的value中

呼叫生成器的next方法時,可以傳遞引數,這個引數是yield表示式的返回值。

第一次呼叫函式時,傳遞的引數是沒有任何含義的。

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...