迭代器(iterator)
迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,迭代器不要求所有元素實現存在,
只有當迭代到某個元素的時候才使用該元素,這乙個特性非常適用於處理超大規模集合或者幾個g的檔案。
特點:
訪問者不需要關心迭代器內部的結構,僅需通過__next__()方法不斷去取下乙個內容
不能隨機訪問集合中的某個值 ,只能從頭到尾依次訪問
訪問到一半時不能往回退
便於迴圈比較大的資料集合,節省記憶體(linux的cat就是使用了迭代)
生成乙個迭代器
1 names = iter(['在迭代的過程中,可以繼續給列表新增元素,已提供後續的迭代。alex
','alben
','jack'])
2print
(type(names))34
print(names.__next__
())5
print(names.__next__
())6
print(names.__next__())
生成器(generator)
乙個函式呼叫時,返回乙個迭代器(iterator)這個函式就是乙個生成器,在函式中包含語法yield就是定義乙個生成器。
案例:
importview codesysdef
read_file(file):
with open(file) as f:
for line in
f:
(line.strip())
yield
cat = read_file('
ethernet.txt')
print("
逐行讀取檔案內容,請根據需求退出")
while
true:
choose = input("
enter no to exit from the process: ")
if choose.upper() == 'no'
: exit()
else
: cat.
__next__()
效果:
逐行讀取檔案內容,請根據需求退出
enter no to exit from the process:
0x0000 - 0x05dc ieee 802.3 長度
enter no to exit from the process:
0x0101 – 0x01ff 實驗
enter no to exit from the process:
0x0600 xerox ns idp
enter no to exit from the process:
0x0660
enter no to exit from the process: no
process finished with exit code 0
迭代器與生成器
可迭代物件 可以直接作用於for迴圈的物件 統稱為可迭代物件 返回迭代器的物件 即iterable。一是集合資料型別,如list tuple dict set str等 二是generator,包括生成器和帶yield的generator function。容器 簡單來說 容器是一系列元素的集合 容...
生成器與迭代器
迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 list 1,2,3,...
生成器與迭代器
通過列表推導式,可以直接建立乙個列表,但是收到記憶體限制,列表容量肯定是有限的而且,建立乙個包含100萬個元素的列表,占用很大的儲存空間。如果我們僅僅需要訪問前面幾個元素,後面 後面元素的占用儲存空間就被浪費 所以,如果列表元素可以按照某種演算法算出來,那我們就可以再迴圈當中不斷地推導它,生成元素,...