Python迭代器和產生器

來源:互聯網
上載者:User

標籤:__init__   迭代   over   可迭代對象   rev   range   迭代器   ...   python   

for element in [1, 2, 3]:  print(element)

能for...in...的為可迭代對象

迭代器是?個可以記住遍曆的位置的對象。迭代器對象從集合的第?個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

 

判斷方法:

  isinstance()

 

迭代器定義方法:

class Reverse:    """Iterator for looping over a sequence backwards."""    def __init__(self, data):        self.data = data        self.index = len(data)    def __iter__(self):        return self    def __next__(self):        if self.index == 0:            raise StopIteration        self.index = self.index - 1        return self.data[self.index]

 

產生器:

 

def reverse(data):    for index in range(len(data)-1, -1, -1):        yield data[index]  

 

產生器是一種簡單有效建立迭代器的工具:

  1.自動建立__iter__()和__next__()

  2.自動儲存局部變數和執行狀態

  yield可以簡單理解為返回一個迭代器的return

 

列表解析與產生器運算式:

  (x+1 for x in lst) #產生器運算式,返回迭代器。外部的括弧可在用於參數時省略。

  [x+1 for x in lst] #列表解析,返回list

 

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.