0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

網(wǎng)絡(luò)工程師學(xué)Python-迭代器

網(wǎng)絡(luò)技術(shù)干貨圈 ? 來源:網(wǎng)絡(luò)技術(shù)干貨圈 ? 2023-04-20 16:58 ? 次閱讀

迭代器是 Python 中非常重要的概念之一,它是一種對象,可以在代碼中按順序訪問一組值。Python 中的大多數(shù)數(shù)據(jù)類型,如列表、元組、集合和字典都是可迭代的對象,這意味著它們可以使用 for 循環(huán)進(jìn)行迭代。但是,在某些情況下,我們需要更精細(xì)的控制迭代過程,這就是迭代器的作用。

迭代器的定義和用法

在 Python 中,迭代器是一種實(shí)現(xiàn)了 _iter_() 和 _next_() 方法的對象。_iter_() 方法返回迭代器對象本身,而 _next_() 方法返回迭代器中的下一個(gè)值。如果沒有更多的值可供迭代,它會引發(fā) StopIteration 異常,這標(biāo)志著迭代的結(jié)束。

以下是一個(gè)簡單的示例,演示了如何使用迭代器遍歷一個(gè)列表:

numbers=[1,2,3,4,5]
iter_obj=iter(numbers)

whileTrue:
try:
item=next(iter_obj)
print(item)
exceptStopIteration:
break

在上面的示例中,我們首先創(chuàng)建了一個(gè)名為 numbers 的列表,然后使用 iter() 函數(shù)創(chuàng)建了一個(gè)迭代器對象 iter_obj。接下來,我們使用 while 循環(huán)和 try-except 塊來遍歷迭代器。每次迭代,我們使用 next() 函數(shù)從迭代器中獲取下一個(gè)值,并將其存儲在變量 item 中。如果沒有更多的值可供迭代,StopIteration 異常會被引發(fā),我們會退出循環(huán)。

創(chuàng)建自己的迭代器

Python 中的迭代器是可自定義的,我們可以通過實(shí)現(xiàn) _iter_() 和 _next_() 方法來創(chuàng)建自己的迭代器。以下是一個(gè)示例,演示了如何使用迭代器對象遍歷一個(gè)自定義列表:

classMyList:
def\__init\__(self,data):
self.data=data
self.index=0

def\__iter\__(self):
returnself

def\__next\__(self):
ifself.index

在上面的示例中,我們定義了一個(gè)名為 MyList 的自定義列表類,它包含一個(gè)名為 data 的屬性和一個(gè)名為 index 的計(jì)數(shù)器。在 _iter_() 方法中,我們返回自身,表示迭代器對象本身就是迭代器。在 _next_() 方法中,我們檢查計(jì)數(shù)器是否小于列表的長度,如果是,我們返回列表中的下一個(gè)元素并將計(jì)數(shù)器加 1。否則,我們引發(fā) StopIteration 異常來表示迭代的結(jié)束。

接下來,我們創(chuàng)建一個(gè)名為 my_list 的 MyList 實(shí)例,并使用 for 循環(huán)來迭代它。在每次迭代中,我們使用 next() 方法從迭代器中獲取下一個(gè)元素,并將其打印到控制臺上。

迭代器 vs. 可迭代對象

在 Python 中,不同的數(shù)據(jù)類型具有不同的迭代行為。一些數(shù)據(jù)類型是可迭代的對象,而另一些則是迭代器對象??傻鷮ο笫侵妇哂?_iter_() 方法的對象,而迭代器對象是指具有 _iter_() 和 _next_() 方法的對象。

可以使用 Python 內(nèi)置函數(shù) iter() 將可迭代對象轉(zhuǎn)換為迭代器對象。例如,我們可以使用以下代碼將一個(gè)列表轉(zhuǎn)換為迭代器對象:

numbers=[1,2,3,4,5]
iter_obj=iter(numbers)

注意,numbers 列表是可迭代對象,而 iter_obj 是迭代器對象。在使用 iter() 函數(shù)將可迭代對象轉(zhuǎn)換為迭代器對象時(shí),Python 會在后臺自動調(diào)用 _iter_() 方法,以創(chuàng)建迭代器對象。

總結(jié)

在 Python 中,迭代器是一種對象,可以訪問一組值,并按順序返回它們。迭代器通過實(shí)現(xiàn) _iter_() 和 _next_() 方法來工作??傻鷮ο笫蔷哂?_iter_() 方法的對象,而迭代器對象是具有 _iter_() 和 _next_() 方法的對象。在 Python 中,大多數(shù)數(shù)據(jù)類型都是可迭代對象,但我們可以通過實(shí)現(xiàn)自己的迭代器來自定義迭代行為。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2248

    瀏覽量

    94180
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84289
  • 迭代器
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    4294

原文標(biāo)題:網(wǎng)絡(luò)工程師學(xué)Python-14-迭代器

文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    華為網(wǎng)絡(luò)工程師培訓(xùn)教材

    華為網(wǎng)絡(luò)工程師培訓(xùn)教材
    發(fā)表于 08-16 17:27

    華為“網(wǎng)絡(luò)工程師”培訓(xùn)專用教程

    華為“網(wǎng)絡(luò)工程師”培訓(xùn)專用教程
    發(fā)表于 08-18 15:12

    網(wǎng)絡(luò)工程師RCNA培訓(xùn)教材(ppt)

    網(wǎng)絡(luò)工程師RCNA培訓(xùn)教材
    發(fā)表于 03-26 09:04 ?0次下載

    合格的網(wǎng)絡(luò)工程師必會實(shí)驗(yàn)大全

    合格的網(wǎng)絡(luò)工程師必會實(shí)驗(yàn)大全.pdf合格的網(wǎng)絡(luò)工程師必會實(shí)驗(yàn)大全.pdf
    發(fā)表于 10-30 17:46 ?0次下載

    2004-2012網(wǎng)絡(luò)工程師試題

    2004-2012網(wǎng)絡(luò)工程師試題是工程師學(xué)習(xí)通關(guān)的必備書籍
    發(fā)表于 06-17 16:33 ?0次下載

    什么是網(wǎng)絡(luò)工程師

    什么是網(wǎng)絡(luò)工程師網(wǎng)絡(luò)工程師就是通過學(xué)習(xí)和訓(xùn)練,掌握了網(wǎng)絡(luò)技術(shù)的理論知識和操作技能的網(wǎng)絡(luò)技術(shù)人員。網(wǎng)絡(luò)工程師能夠從事計(jì)算機(jī)信息系統(tǒng)的設(shè)計(jì)、建
    的頭像 發(fā)表于 02-19 14:28 ?7576次閱讀

    網(wǎng)絡(luò)工程師的待遇怎么樣

    的熟練,職位也可能從技術(shù)崗位上升為管理崗位,這個(gè)時(shí)候網(wǎng)絡(luò)工程師都會有一個(gè)較好的前景和可觀的收入。下面就分別說說網(wǎng)絡(luò)工程師逐漸晉升的崗位和相應(yīng)薪資供大家參考。
    的頭像 發(fā)表于 10-09 16:58 ?6015次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-for循環(huán)

    Python 中,for 循環(huán)是一種常用的結(jié)構(gòu),用于遍歷序列(如列表、元組、字符串)中的元素。
    的頭像 發(fā)表于 04-19 15:47 ?891次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-函數(shù)定義

    Python 中,函數(shù)是一段可重復(fù)使用的代碼塊,可以接受一些輸入(即函數(shù)參數(shù)),并根據(jù)輸入執(zhí)行某些操作。
    的頭像 發(fā)表于 04-19 15:49 ?634次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-繼承概念介紹

    Python 中,繼承是一種重要的面向?qū)ο缶幊谈拍?。通過繼承,我們可以定義一個(gè)新的類,它繼承了現(xiàn)有類的屬性和方法。
    的頭像 發(fā)表于 04-20 16:56 ?439次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-文件打開

    Python中,可以使用open()內(nèi)置函數(shù)打開文件,以執(zhí)行一系列文件的操作。在本文中,將介紹Python中打開文件的基礎(chǔ)知識及常用的打開模式。
    的頭像 發(fā)表于 04-27 09:14 ?597次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-文件處理

    當(dāng)涉及到 Python 文件處理時(shí), 我們通常會涉及到文件的讀取和寫入, 以及文件的操作和處理。
    的頭像 發(fā)表于 04-27 09:21 ?605次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-文件刪除

    Python 文件刪除是 Python 開發(fā)中常用的一項(xiàng)操作,本文將針對 Python 中的 os 模塊提供多個(gè)示例,介紹如何刪除不同類型的文件。
    的頭像 發(fā)表于 04-27 09:24 ?465次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-遠(yuǎn)程連接管理Telnet

    Python Telnet是一種用于遠(yuǎn)程連接和管理網(wǎng)絡(luò)設(shè)備的Python庫。
    的頭像 發(fā)表于 04-28 09:47 ?847次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-多線程技術(shù)簡述

    Python多線程是一種并發(fā)編程的方式,通過使用多個(gè)線程在同一時(shí)間內(nèi)執(zhí)行多個(gè)任務(wù)
    的頭像 發(fā)表于 04-28 09:49 ?506次閱讀
    <b class='flag-5'>網(wǎng)絡(luò)工程師學(xué)</b><b class='flag-5'>Python-</b>多線程技術(shù)簡述