1. 程式人生 > >python學習日記:day13------叠代器與生成器

python學習日記:day13------叠代器與生成器

就是 元素 獲取值 空間 for stat name 監聽 dir

一、導入 1,dir功能 print(dir([]))告訴我這個列表擁有的所有方法 帶著雙下劃線的方法叫做雙下方法。 2,一個列表執行了_iter_()之後的返回值就是一個叠代器 3,_length_hint_元素個數 4,_setstate_從指定位置取值 5,[]._iter_()叠代器---->_next_通過next就可以從叠代器中一個一個的取值 6、叠代器中的_next_()方法 可以一個一個的獲取值 二、叠代器概念 叠代器協議:內部含有_next_和 _iter_方法的就是叠代器 三、可叠代的 可叠代協議 :只要含有 _iter_方法的都是可叠代的(都能被for循環)
四、可叠代的—>叠代器 可叠代的+._iter_()方法就可以得到一個叠代器 五、for循環與叠代器 for循環就是在使用叠代器 只有是可叠代對象的時候 才能用for 當我們遇到一個新的變量,不確定能不能for循環的時候,就判斷它是否可叠代。 六、叠代器的好處: #從容器類型中一個一個的取值,會把所有的值都取到 #可以節省內存空間 #叠代器並不會在內存中再占用一個大塊內存,而是隨著循環每次生成一個,每次next每次給我一個 七、生成器 1,生成器的本質是叠代器 2,生成器函數
def generator():
    print(1)
    yield a
ret 
=generator () print(ret)

只要含有yield的關鍵字函數都是生成器函數,且yield與return不能共用且需要寫在函數內部

#只要是生成器函數:執行之後會得到一個生成器作為返回值。

def generator():
    print(1)    
    yield a
#生成器函數:執行之後會得到一個生成器作為返回值
ret = generator()
print(ret)
print(ret._next_())

def wahaha():
    for i in range(20000):
        yield    娃哈哈%s%i

3,監聽文件的輸入

def tail(filename):

  f =open(‘file‘,encoding =‘utf-8‘)   while True:   line = f.readline()     if line.strip():       yield line.strip() g = tail (‘file‘) for i in g:   if ‘python‘ in i :     print(i)

python學習日記:day13------叠代器與生成器