1. 程式人生 > >生成器、可迭代、迭代器

生成器、可迭代、迭代器

生成器:

  1. 將[]改為()

G = (i*I for I in range(8))

生成器是一個物件不能直接列印

通過遍歷得到生成器的資料

         For I in g:

                   Print(i)

通過next得到資料

  1. Yield

一定要在函式的內部

Yield a 向生成器中新增一個物件

Generator 生成器型別

 

裴波那切  從第三個數開始 等於前連個數的和

 

生成器的特點 節約記憶體

 

迭代器、可迭代

迭代器:可以被next函式呼叫,並不斷返回下一個值的物件: iterator

可迭代:可以直接作用於for迴圈的物件統稱為可迭代物件:  iterable

        

引入模組

可以被for迴圈的資料型別

  1. 集合資料型別, list ,tuple , dict, set, str
  2. Generator 包括生成器和帶yield的generator function

From collections.abc import iterable 可迭代

         From collections.abc import iterator 迭代器   可以next

         Isinstance(a,iterator)判斷物件是否是iterator 迭代器

         Lsinstance(a,iterable)判斷物件是否是iterable可迭代

         生成器是一個迭代器

Iter()函式

List, dict, str  是可迭代的(可以for遍歷)不是迭代器(沒有next方法)

生成器是可迭代的也是迭代器

可以將list , dict, str 等可迭代的變成迭代器  使用iter()函式:

 

         Isinstance(iter(a),iterator)