前言
前篇內容的介紹應該能很容易地讓我們理解掌握Python中的可迭代物件和迭代器(Iterable & Iterator)。本次內容我們來進一步介紹迭代器的相關內容。
迭代器協定
在Python中,迭代器(Iterator)物件需要支援以下兩個方法,它們一起構成迭代器協定:
1)__iter__():
物件的該方法傳回迭代器物件本身。這是要求容器和迭代器與for-in語句一起使用所必需的。你也可以使用內建的iter()函數,該函數實質上是在背後呼叫了__iter__()方法的。
2)__next__():
從迭代器傳回下一項。如果沒有其他項,則拋出StopIteration異常。也可以使用內建的next()函數讀取下一項,其實質也是呼叫__next__()方法。
正如我們在前所講過的,列表、元組、字典和集合都是可迭代型別。換句話說,它們是可以從中獲得迭代器的類型。看範例:
程式碼片段清單-01
輸入結果如下:
A B C
在範例程式碼中,我們定義了一個可迭代元組。然後對這個可迭代物件呼叫iter()函數。 iter()函數傳回一個迭代器,我們將其命名為tupIter。然後多次呼叫next()函數。 next()函數每次執行時,都會自動傳回迭代器中的下一個項目。
再看下一段範例程式碼:
程式碼片段-02
運行輸出的結果為:
P y
在上述程式碼清單中,在字串物件上呼叫__ iter__()方法。字串物件實現了迭代器協議,所以字串是包含字元序列的可迭代物件的。直接呼叫__ iter__()方法就可傳回一個迭代器。接著再透過傳回的迭代器呼叫__ next__()方法,就可一個一個輸出迭代器中的元素內容。
一言以蔽之,只要實作了迭代器協定的對象,即可依照上面的兩種方法進行對象的迭代呼叫。
迭代器遍歷
如如我們在前介紹中所看到的,我們使用next()函數(或__next__()方法)手動遍歷迭代器的項目。當next()函數到達迭代器的末端時,就沒有更多的資料要返回,將會得到一個StopIteration異常。
請看範例:
程式碼片段清單-03
執行上述程序,輸出結果類似如下:
10 #20 # #30 Traceback (most recent call last): File ……, in print(next(listIter)) StopIteration |
以上是Python程式設計中的迭代器協定與遍歷方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造

數組的同質性對性能的影響是雙重的:1)同質性允許編譯器優化內存訪問,提高性能;2)但限制了類型多樣性,可能導致效率低下。總之,選擇合適的數據結構至關重要。

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版
好用的JavaScript開發工具