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__
(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__()
(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 函式呼...