菜鳥學習python之旅---基礎入門(11)---迭代器與生成器

迭代器

迭代是Python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是一個可以記住遍歷的位置的對象。

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter() 和 next()

字符串,列表或元組對象都可用於創建迭代器:

>>>list=[1,2,3,4]

>>> it = iter(list) # 創建迭代器對象

>>> print (next(it)) # 輸出迭代器的下一個元素

1

>>> print (next(it))

2

>>>

迭代器對象可以使用常規for語句進行遍歷:

list=[1,2,3,4]

it = iter(list)                # 創建迭代器對象

for x in it:

       print (x, end=" ")

輸出結果如下:

1 2 3 4

也可以使用 next() 函數:

import sys            # 引入 sys 模塊

list=[1,2,3,4]

it = iter(list)            # 創建迭代器對象

while True:

         try:

              print (next(it))

         except StopIteration: 

              sys.exit()

執行以上程序,輸出結果如下:

1
2
3
4

 

生成器

 

在 Python 中,使用了 yield 的函數被稱爲生成器(generator)。

跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。

在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行。

調用一個生成器函數,返回的是一個迭代器對象。

以下實例使用 yield 實現斐波那契數列:

import sys

def fibonacci(n):            # 生成器函數 - 斐波那契

       a, b, counter = 0, 1, 0 

       while True:

                if (counter > n):

               return yield a

               a, b = b,

               a + b counter += 1

f = fibonacci(10)                  # f 是一個迭代器,由生成器返回生成

while True:

          try:

                  print (next(f), end=" ")

          except StopIteration:

sys.exit()

執行以上程序,輸出結果如下:

0 1 1 2 3 5 8 13 21 34 55  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章