1. 循環對象的引入
在python中,循環對象就是包含一個_next_()方法的對象,這個方法的作用就是進行到下一個結果,結束結果之後會報出StopIteration錯誤。舉例如下:
for i in range(5):
print i
說明:上例是比較簡單的for循環,那麼,每次循環時會調用循環對象同時對象調用_next_()方法,直到出現StopIteration錯誤。其實,每次遍歷都會返回一個循環對象,直到循環條件終止。
循環對象的好處:概括說就是隨用隨生成,所使用的元素可在循環過程中逐次生成。那麼,就可以節省空間資源,提高效率。
2. Python中的生成器(可構成一個自定義的循環對象)
先舉個生成器的例子:
def f():
a = 1
yield a
a = a * a
yield a
print f()
print f()
說明:從例子中可見,生成器的編寫和函數定義類似,就是把return改爲yield。生成器中遇到一個yield時,會暫停運行生成器,返回yield後面的值。當再調用生成器時,會從剛纔暫停的地方繼續運行,直到遇到下一個yield。生成器自身又構成一個循環器,每次循環使用一個yield返回的值。生成器中有幾個yield,循環器就循環幾次。
3. Python的表推導(list comprehension,可以快速的生成表)
先舉例如下:
list = []
for i in range(5):
list.append(i ** 2)
以上的例子會產生一個表list,採用簡單快捷的方式(表推導)來改寫例子。
list = [I ** 2 for I in range(5)]
可以看出,表推導和生成器表達式類似,但表推導使用中括號[]。其實,表推導的原理也是利用循環對象來處理的。