選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Python 教程

Python 主頁 Python 簡介 Python 入門 Python 語法 Python 註釋 Python 變數 Python 資料型別 Python 數字 Python 型別轉換 Python 字串 Python 布林值 Python 運算子 Python 列表 Python 元組 Python 集合 Python 字典 Python If...Else Python While 迴圈 Python For 迴圈 Python 函式 Python Lambda Python 陣列 Python 類/物件 Python 繼承 Python 迭代器 Python 多型 Python 作用域 Python 模組 Python 日期 Python 數學 Python JSON Python 正則表示式 Python PIP Python Try...Except Python 使用者輸入 Python 字串格式化

檔案處理

Python 檔案處理 Python 讀取檔案 Python 寫入/建立檔案 Python 刪除檔案

Python 模組

NumPy 教程 Pandas 教程 SciPy 教程 Django 教程

Python Matplotlib

Matplotlib 簡介 Matplotlib 入門 Matplotlib Pyplot Matplotlib 繪圖 Matplotlib 標記 Matplotlib 線條 Matplotlib 標籤 Matplotlib 網格 Matplotlib 子圖 Matplotlib 散點圖 Matplotlib 條形圖 Matplotlib 直方圖 Matplotlib 餅圖

機器學習

入門 均值、中位數、眾數 標準差 百分位數 資料分佈 正態資料分佈 散點圖 線性迴歸 多項式迴歸 多元迴歸 縮放 訓練/測試 決策樹 混淆矩陣 層次聚類 邏輯迴歸 網格搜尋 分類資料 K-means Bootstrap Aggregation 交叉驗證 AUC - ROC 曲線 K-近鄰

Python MySQL

MySQL 入門 MySQL 建立資料庫 MySQL 建立表 MySQL 插入 MySQL 選擇 MySQL Where MySQL Order By MySQL 刪除 MySQL 刪除表 MySQL 更新 MySQL Limit MySQL Join

Python MongoDB

MongoDB 入門 MongoDB 建立資料庫 MongoDB 集合 MongoDB 插入 MongoDB Find MongoDB Query MongoDB Sort MongoDB 刪除 MongoDB 刪除集合 MongoDB 更新 MongoDB Limit

Python 參考

Python 概述 Python 內建函式 Python 字串方法 Python 列表方法 Python 字典方法 Python 元組方法 Python 集合方法 Python 檔案方法 Python 關鍵字 Python 異常 Python 詞彙表

模組參考

Random 模組 Requests 模組 Statistics 模組 Math 模組 cMath 模組

Python 如何操作

刪除列表重複項 反轉字串 兩個數字相加

Python 示例

Python 示例 Python 編譯器 Python 練習 Python 測驗 Python 伺服器 Python 面試問答 Python 訓練營 Python 證書

Python 迭代器


Python迭代器

迭代器是一個包含可計數值的物件。

迭代器是一個可以進行迭代的物件,這意味著您可以遍歷所有值。

嚴格來說,在 Python 中,迭代器是實現了迭代器協議的物件,該協議包含 __iter__()__next__() 方法。


迭代器 vs 可迭代物件

列表、元組、字典和集合都是可迭代物件。它們是可迭代的容器,您可以從中獲取迭代器。

所有這些物件都有一個 iter() 方法,用於獲取迭代器

示例

從元組返回迭代器,並列印每個值

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))
自己動手試一試 »

即使是字串也是可迭代物件,並且可以返回迭代器

示例

字串也是可迭代物件,包含一系列字元

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
自己動手試一試 »

遍歷迭代器

我們也可以使用 for 迴圈來遍歷可迭代物件

示例

遍歷元組的值

mytuple = ("apple", "banana", "cherry")

for x in mytuple
  print(x)
自己動手試一試 »

示例

遍歷字串的字元

mystr = "banana"

for x in mystr
  print(x)
自己動手試一試 »

實際上,for 迴圈會建立一個迭代器物件,並在每次迴圈時執行 next() 方法。



建立迭代器

要將物件/類建立為迭代器,您必須為您的物件實現 __iter__()__next__() 方法。

正如您在 Python 類/物件章節中學到的,所有類都有一個名為 __init__() 的函式,它允許您在建立物件時進行一些初始化。

__iter__() 方法的作用類似,您可以執行操作(初始化等),但必須始終返回迭代器物件本身。

__next__() 方法也允許您執行操作,並且必須返回序列中的下一個項。

示例

建立一個返回數字的迭代器,從 1 開始,每個序列遞增一(返回 1,2,3,4,5 等)

class MyNumbers
  def __iter__(self)
    self.a = 1
    return self

  def __next__(self)
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
自己動手試一試 »

StopIteration

如果您有足夠的 next() 語句,或者在 for 迴圈中使用,上面的示例將永遠繼續下去。

為了防止迭代無限進行,我們可以使用 StopIteration 語句。

__next__() 方法中,我們可以新增一個終止條件,在迭代次數達到指定次數時引發錯誤

示例

迭代 20 次後停止

class MyNumbers
  def __iter__(self)
    self.a = 1
    return self

  def __next__(self)
    if self.a <= 20
      x = self.a
      self.a += 1
      return x
    else
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter
  print(x)
自己動手試一試 »


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援