python 之 函式 迭代器

2022-07-25 03:15:07 字數 2279 閱讀 7845

5.91 可迭代物件和迭代器物件

'方法的物件,都是可迭代的物件

3、迭代器:迭代取值工具,可迭代的物件執行iter方法得到的返回值就是迭代器物件

iter_dic=dic.__iter__

()print(iter_dic.__next__

())print(iter_dic.__next__())

4、可迭代的物件vs迭代器物件?

可迭代的物件:str,list,tuple,dict,set,file (除了數值)

#str1='hello'

#list1=[1,2,3]

#tup1=(1,2,3)

#dic=

#s1=

#f=open('a.txt','w',encoding='utf-8') 迭代器物件:檔案物件本身就是迭代器物件

1、獲取可迭代物件的方式:無須獲取,python內建str,list,tuple,dict,set,file都是可迭代物件

2、特點:

內建有__iter__方法的都叫可迭代的物件,執行該方法會拿到內建迭代器物件

1、獲取迭代器物件的方式:

執行可迭代物件的__iter__方法,拿到的返回值就是迭代器物件

2、特點:

既內建有__iter__方法,又內建有__next__方法

執行迭代器物件的__iter__得到的仍然是迭代器本身

執行迭代器物件的__next__得到的迭代器的下乙個值

for item in

可迭代的物件:

pass

5.92 迭代器的優缺點分析

迭代器的優點:​1、提供了一種可不依賴於索引的取值方式

l=open('

a.txt

','r

',encoding='

utf-8')

iter_l=l.__iter__

()while

true:

try:

print(iter_l.__next__

())

except

stopiteration:

break

l=[1,2,3,4,4,5,5,6,6,6,6,6,6,6,6,6]

iter_l=l.__iter__

()print

(iter_l)

print(iter_l.__next__())

2 、迭代器更加節省記憶體

item=range(0,100000000000000000000000000000000000000000000)

print(item)

迭代器的缺點:​1、取值麻煩,只能乙個乙個取,只能往後取,​2、只能往後取,一次性的,取完就丟擲一次stopiteration,無法用len獲取長度

x=[1,2,3]

iter_x=x.__iter__

()while

true:

try:

print(iter_x.__next__

())

except

stopiteration:

break

print('

第二次******************************===》')

iter_x=x.__iter__()

while

true:

try:

print(iter_x.__next__

())

except

stopiteration:

break

5.93 for迴圈原理分析:

1、for 迴圈稱之為迭代器迴圈,in後跟的必須是可迭代的物件2、for迴圈會執行in後物件的iter方法,拿到迭代器物件3、然後呼叫迭代器物件的next方法,拿到乙個返回值賦值給line,執行一次迴圈體4、周而復始,直到取值完畢,for迴圈會檢測到異常自動結束迴圈

l=open('

a.txt

','r

',encoding='

utf-8')

for line in l: #

iter_l=l.__iter__()

print

(line)​

for item in :

print(item)

python之迭代器

可迭代物件就是序列觀念的通用化,如果物件是實際儲存的序列,或者可以在迭代工具環境 eg for迴圈 中一次產生乙個結果的物件,就可看成是可迭代的。可迭代物件包括實際序列和按照需求而計算的虛擬序列。常見的迭代工具 for迴圈 列表解析 in成員關係測試以及map內建函式等。1.檔案迭代器 readli...

Python之迭代器

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

python之迭代器

首先需要搞清楚兩個概念 可迭代,迭代器,兩者不能混為一談。可以直接作用於for迴圈的物件統稱為可迭代物件 iterable python裡可以用isinstance iterable 來檢測第乙個引數是不是可迭代的 這裡第乙個引數是乙個列表 注意,可迭代和 迭代器 是不一樣的!可以被next 函式呼...