python--迭代器(Iterator)

  博客地址:http://www.cnblogs.com/yudanqu/函數

一、可迭代對象 

  • 在介紹迭代器以前呢,咱們先聊一下可迭代對象(Iterable),可迭代對象就是能夠直接做用於for循環的對象。
  • 那麼什麼是能夠直接用於for循環的呢?
  • 能夠直接用於for的數據類型通常分爲兩種:

    一、集合數據類型,如list、tuple、dict、set、string……學習

    二、generator,包括生成器和帶yield的generator functionspa

  • 那麼咱們如何判斷一個對象是不是可迭代對象呢?答:isinstance()

  ************************************************************************************************************************************3d

  描述:isinstance() 函數來判斷一個對象是不是一個已知的類型code

  語法:isinstance(object, classinfo)對象

  參數:(1)object -- 實例對象blog

        (2)classinfo -- 能夠是直接或間接類名、基本類型或者由它們組成的元組字符串

  返回值:若是對象類型與classinfo的類型相同則返回True,不然返回Falseget

  ************************************************************************************************************************************
input

  那麼我下面給你們看個小栗子:

        

  在這裏面,首先我導入的Iterable的包,也就是可迭代對象,下面的四條語句是分別查看列表、元組、字典、字符串的類型,能夠看到他們四個都是可迭代對象,固然,可迭代對象遠不止這些,這裏只是給你們一個概念,而且看一下isinstance的使用方法。若是你還不能理解的話,能夠想一下,你有沒有寫過這樣一句話(for i in [1,2,3,4,5]),這是一個循環的表示方法,這裏面就是在循環列表中的元素,來實現內部語句塊。也能夠說成是遍歷這個列表,固然也就是迭代了。

二、迭代器

  迭代器就是不但能夠做用於for循環,還能夠被next()不斷的調用並返回下一個值,知道最後拋出一個錯誤StopIteration錯誤,表示沒法繼續返回下一個值。

 對比:
  
  能夠被next()函數調用並不斷返回下一個值得對象稱爲迭代器 (Iterator)   能夠直接做用於for循環的對象統稱爲可迭代對象(Iterable)

   下面又是一個小栗子:

  

  裏面的isinstance依然是判斷類型,咱們能夠看到,(x for x in range(5))是一個迭代器,咱們能夠把這個迭代器用一個屬性來接收,這樣方便咱們調用。注意上面提到的,迭代器是能夠被next()調用的,因此咱們next(L)來迭代輸出裏面的值。

  

  如今的這些返回值爲False,你們應該瞭解他的緣由了吧,[](){}"" 等等這些都只是可迭代對象,而不是迭代器。(注意那兩個單詞是不同的)

  除此以外還須要說明的一點是,其餘的數據類型也能夠轉爲迭代器:

# 例如:列表轉迭代器:
a = iter([1,2,3,4])
print(next(a))

  元組,字符串,字典均可以這樣。

 *下面用一個小案例讓你們看下他的用法

endstr = 'end'
str = ""

for line in iter(input,endstr):
    str += line + '\n'

print(str)
#目的就是爲了使input不直接退出,能夠換行繼續輸入;並且在打印str時也能夠分行同時打印

  看一下效果:

  

  迭代器大概就先介紹到這裏,歡迎你們和我來一塊兒學習。

 

  做者:漁單渠(yudanqu)

  博客地址:http://www.cnblogs.com/yudanqu/

相關文章
相關標籤/搜索