生成器、可迭代、迭代器
阿新 • • 發佈:2018-11-21
生成器:
- 將[]改為()
G = (i*I for I in range(8))
生成器是一個物件不能直接列印
通過遍歷得到生成器的資料
For I in g:
Print(i)
通過next得到資料
- Yield
一定要在函式的內部
Yield a 向生成器中新增一個物件
Generator 生成器型別
裴波那切 從第三個數開始 等於前連個數的和
生成器的特點 節約記憶體
迭代器、可迭代
迭代器:可以被next函式呼叫,並不斷返回下一個值的物件: iterator
可迭代:可以直接作用於for迴圈的物件統稱為可迭代物件: iterable
引入模組
可以被for迴圈的資料型別
- 集合資料型別, list ,tuple , dict, set, str
- 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)