python之迭代器和產生器

來源:互聯網
上載者:User

標籤:

迭代器

根本上說, 迭代器就是有一個 next() 方法的對象

迭代器可用內建的iter方法建立

>>> i = iter(‘abc‘)>>> i.next()‘a‘>>> i.next()‘b‘>>> i.next()‘c‘

 

 對類可用__iter__和next()建立迭代器

class Fib(object):    def __init__(self):        self.a, self.b = 0, 1 # 初始化兩個計數器a,b    def __iter__(self):        return self # 執行個體本身就是迭代對象,故返回自己    def next(self):        self.a, self.b = self.b, self.a + self.b # 計算下一個值        if self.a > 100000: # 退出迴圈的條件            raise StopIteration();        return self.a # 返回下一個值for n in Fib():    print n-------------------------------11235...4636875025

 

 

 

產生器

產生器是可以迭代的,但是只可以讀取它一次

>>> g = (x*x for x in range(3))>>> for i in gt :...    print(i)014>>> for i in g :...    print(i)

 

yield

#當你調用這個函數的時候,函數內部的代碼並不立馬執行, 這個函數只是返回一個產生器對象def createGenerator():    mylist = range(3)    for i in mylist:        yield i*i>>> for i in mygenerator:    print i014>>> for i in mygenerator:  #也是只可調用一次    print i

 

 

 

2015-05-26

python之迭代器和產生器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.