python 3 可迭代對象與迭代器


1, 可迭代對象
內部含有__iter__方法的對象是可迭代對象
遵循可迭代協議
dir() 檢查對象含有什么方法
dir()會返回一個列表,這個列表中含有該對象的以字符串的形式所有方法名。這樣我們就可以判斷python中的一個對象是不是可迭代對象了
print(dir("abc"))
判斷對象是否是可迭代對象的方法
方法一:
print('__iter__' in dir([1, 2, 3]))   
通過成員運算符 ,返回bool 值
方法二:
fromcollections .abc import Iterable
print(isinstance('123',Iterable))
isinstance 判斷一個對象是什么類型,返回bool
迭代器
內部含有 __iter__ 且 __next__方法的就是迭代器。
可迭代對象通過 .__iter__()可以轉換成迭代器,滿足迭代器協議。
l= [1, 2, 3]
l_obj= l.__iter__()
判斷迭代器的方法:
第一種:
print('__next__'in dir(l_obj))
第二種:
fromcollections.abcimport Iterator
print(isinstance('123',Iterator))
迭代器的取值方法:
方法一:
print(l_obj.__next__()) 一次取一個,超出范圍會報錯
方法二: for 循環
注意:實際上可迭代對象是不可以一個一個的一次取值的,因為他沒有__next__方法。
for循環提供一個機制:
1,將可迭代對象轉化成迭代器。
2,利用__next__()進行取值。
3,用try異常處理方法防止報錯。
迭代器特點:
1,節省內存。
  上一條在內存中會被釋放
2,滿足惰性機制。
  next一次,取一個值,絕不過多取值。​
3,取值過程不可逆(一條路走到黑)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM