python基礎 迭代器

2022-06-26 23:24:16 字數 1546 閱讀 4831

1.什麼是迭代器:

2.為什麼要有迭代器?

對於序列型別:字串、列表、元組,我們可以使用索引的方式迭代取出其包含的元素。但對於字典、集合、檔案等型別是沒有索引的,若還想取出其內部包含的元素,則必須找出一種不依賴於索引的迭代方式,這就是迭代器.

3.什麼是可迭代物件?

可迭代物件指的是內建有__iter__方法物件,即obj.__iter__,如下

4.什麼是迭代器物件?

可迭代物件執行__iter__()得到的結果就是迭代器物件

而迭代器物件指的是既有 __iter__()又有內建__next()方法的物件 

檔案型別是迭代器物件:

字串,列表,元祖,字典,集合都是可迭代物件,但不是迭代器物件

檔案物件既是可迭代物件,又是迭代器物件

5.迭代器物件的使用

字串,列表,元祖,字典,集合等可迭代物件通過__iter__()得到迭代器物件

迭代器物件通過__iter__()得到仍是迭代器物件本身

__next__()取值不依賴索引

next()函式和__next__的區別:

next()和__next__都是可以獲得下乙個值:

ps:python 3 中的 檔案 物件不支援 next() 方法。 python 3 的內建函式 next() 通過迭代器呼叫 __next__() 方法返回下一項。 在迴圈中,next()方法會在每次迴圈中呼叫,該方法返回檔案的下一行,如果到達結尾(eof),則觸發 stopiteration

ps:for迴圈取值的工作原理:

dic =

for key in dic:

print(dic(key))

1.執行in後物件的dic.__iter__()方法,得到迭代器物件iter_dic

2.執行next(iter_dic).將得到的值賦值給key,然後執行迴圈體**

3.重複過程2,直到捕捉異常stopiteration,結束迴圈 

for。。in的工作原理:

迭代器的優缺點:

優點:提供一種統一的、不依賴於索引的迭代方法

惰性計算,節省記憶體

確定:無法直接獲得長度大小,只有在next完畢後才知道

一次性的,只能往後走,並不能往前退、

Python基礎 迭代器

二 生成器 三 推導表示式 迭代器就是乙個容器,將可迭代物件通過iter包起來 li 1 2,3 4,5 a liter li 迭代器print next a 1print next a 2print next a 3 乙個個取值 1.訪問者不需要去關心內部結構,只需要通過next不斷去取下乙個內容...

Python基礎 迭代器

可以直接作用於for迴圈的資料型別有一下幾種 一類是集合資料型別 如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 這些可以直接作用與for迴圈的物件統稱為可迭代物件 iterable 可以使用isinsta...

python基礎 迭代器

我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。可以使用...