python基礎之迭代器
阿新 • • 發佈:2018-12-19
迭代器
-
概述
迭代器是訪問集合元素的一種方式。迭代器物件從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
-
可迭代物件
迭代器提供了一個統一的訪問集合的介面。只要是實現了__iter__()或 getitem()方法的物件,就可以使用迭代器進行訪問。
序列:字串、列表、元組
非序列:字典、檔案
自定義類:使用者自定義的類實現了__iter__()或__getitem__()方法的物件
-
迭代基礎
f1=open('data.txt') # for line in f1.readlines(): #把所有行讀入記憶體,遇到大檔案效率差 # print(line) # for line in f1: # print(line) # 檔案物件就是自己的迭代器 print(f1.__next__()) print(f1.__next__()) # 為了手動支援迭代,python3.0提供了一個next()方法,他會自動呼叫物件的_next_() print(next(f1))
-
iter() 和 next()
陣列本身沒有迭代物件
arr=[1,2,3,4] E=iter(arr) # print(E.__next__()) # print(next(E)) while True: try: X=E.__next__() except StopIteration: break print(X)
字典物件有一個迭代器,每次返回字典的key
params={'name':'tom','age':12} for key in params: ... #所以不要下面的寫法 for key in params.keys(): ...
-
range()
range()支援多個迭代器,而其他內建函式不支援
arr=list(range(20)) print(arr) R=iter(range(100)) print(next(R)) print(next(R)) print(next(R))
-
map() zip() filter() 和range()不同,以上三個函式都是自己的迭代器
M=map(abs,[2,-3,-1,3]) print(next(M))