iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
自我挑戰組

c 語言與 python 的30天之旅系列 第 21

python 與迭代器(Iterators) 和生成器(Generators)

  • 分享至 

  • xImage
  •  

在 Python 中,迭代器是一個對象,它能夠遍歷元素的集合,例如清單、元組、字典和集合,一次一個元素。迭代器實作迭代器協議,該協議由兩個特殊方法組成:

  • iter():呼叫此方法來初始化迭代器,並且應該傳回迭代器物件本身。它允許在 for 循環中使用對象或與內置的 iter() 函數一起使用。
  • next():這個方法傳回序列中的下一個元素。當沒有更多元素要傳回時,它會引發 StopIteration 異常,表示迭代結束。for迴圈會自動處理此異常,終止迴圈。

Python 中的產生器(Generator)是一種特殊類型的迭代器,它能在迭代過程中動態地產生值,而不是一次性將所有值儲存在記憶體中,這能有效節省記憶體空間,適用於處理大型序列。 產生器可透過生成器表達式(使用圓括號 ())或在函數中使用 yield 關鍵字來創建。

生成器函數是一種特殊類型的函數,它傳回迭代器物件。生成器函數不是使用 return 傳回單個值,而是使用 yield 隨著時間的推移產生一系列結果。這允許函數產生值並在每次產出後暫停其執行,從而在迭代之間保持其狀態。

def fun(max):
    cnt = 1
    while cnt <= max:
        yield cnt
        cnt += 1

ctr = fun(5)
for n in ctr:
    print(n)

上一篇
python 的作用範圍scope)
系列文
c 語言與 python 的30天之旅21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言