1. 程式人生 > >生成器和迭代器,列表推導式

生成器和迭代器,列表推導式

迭代器
可迭代協議 : 某個變數中含有__iter__方法,這個變數可迭代
迭代器協議 : 某個變數中含有__iter__和__next__方
迭代器和可迭代的關係:
迭代器一定可迭代\反之不成立
迭代器的特點 :
節省記憶體
惰性運算
只能取一次
只能按照順序取
for迴圈和迭代器之間的關係
如果是非迭代器,for迴圈會幫助我們把這個飛迭代器程式設計迭代
幫助我們執行next方法從迭代器中取值
幫助我們處理異常停止迭代
生成器
生成器就是迭代器
我們怎麼獲得生成器??
生成器函式
生成器表示式
什麼是生成器函式?
含有yield方法
生成器函式有什麼特點?
呼叫的時候不執行
返回一個生成器/迭代器
從生成器中取值的方式和迭代器一樣
生成器函式和其他函式[本質上]我們得到的結果是相同的
只不過中間的過程不同
普通函式 必須得到所有結果之後才返回
生成器函式 可以一邊計算結果一邊返回
當已經有了一個列表,從這個列表中的每一個元素都需要做某個操作
並且需要將操作的結果放在一個新的列表中
適合使用列表推導式
新的列表 = [每一個元素要做的操作 for 列表中的每一個元素 in 列表]