欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中實現(xiàn)迭代器(iterator)的方法示例

 更新時間:2017年01月19日 15:22:54   作者:瓜園耕讀  
我們經(jīng)常需要遍歷一個對象中的元素,在Python中這種功能是通過迭代器來實現(xiàn)的。下面這篇文章主要給大家介紹了python中實現(xiàn)迭代器(iterator)的方法示例,需要的朋友可以參考借鑒,下面來一起看看吧。

概述

迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結(jié)束。迭代器只能往前不會后退。

延遲計算或惰性求值 (Lazy evaluation)

迭代器不要求你事先準備好整個迭代過程中所有的元素。僅僅是在迭代至某個元素時才計算該元素,而在這之前或之后,元素可以不存在或者被銷毀。這個特點使得它特別適合用于遍歷一些巨大的或是無限的集合。

今天創(chuàng)建了一個實體類,大致如下:

class Account():
 def __init__(self,
   account_name,
   account_type,
   account_cost,
   return_amount=0):
 self.account_name = account_name # 賬戶名
 self.account_type = account_type # 賬戶類型
 self.account_cost = account_cost # 月結(jié)費用
 self.return_amount = return_amount # 返還金額

然后創(chuàng)建一個實體列表:

accounts = [Account("張三", "年費用戶", 450.00, 50),
  Account("李四", "月結(jié)用戶", 100.00),
  Account("楊不悔", "月結(jié)用戶", 190.00, 25),
  Account("任我行", "月結(jié)用戶", 70.00, 10),
  Account("凌未風", "年費用戶", 400.00, 40)]

我想要執(zhí)行next()功能,也就是需要的時候“next”一下,得到List中的下一個元素。

直接測試一下:

結(jié)果發(fā)現(xiàn)List不支持next()特性。這時候,List只是一個iterable,而不是iterator。

iterable和iterator的區(qū)別如下:

  1. iterable —— 只實現(xiàn)了__iter__的對象;
  2. iterator —— 同時實現(xiàn)了__iter__和__next__方法的對象。

其中, __iter__返回iterator對象, __next__則返回迭代過程的下一個元素。

1. 讓列表成為iterator

要讓前面的accounts List成為iterator只需簡單的一個iter()函數(shù):

accounts_iterator = iter(accounts)
(next(accounts_iterator)).account_name

結(jié)果如下圖所示:

這么簡單的函數(shù),估計還是有不少Python開發(fā)者不知道吧?

2. 自定義iterator對象

擴展開來講,如何定義自己的iterator對象呢?其實也就是按照上面的定義,實現(xiàn)__iter____next__方法。

我們接下來定義一個AccountIterator類:

class AccountIterator():
 def __init__(self, accounts):
 self.accounts = accounts # 賬戶集合
 self.index = 0

 def __iter__(self):
 return self

 def __next__(self):
 if self.index >= len(self.accounts):
  raise StopIteration("到頭了...")
 else:
  self.index += 1
  return self.accounts[self.index-1]

運行結(jié)果如:

通過這一陣折騰,next()功能就實現(xiàn)了。Python有不少意外的功能,還等著我們不斷去探究,也許這就是Python的魅力及極客之處。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • Python使用FTP上傳文件的實現(xiàn)示例

    Python使用FTP上傳文件的實現(xiàn)示例

    本文主要介紹了Python使用FTP上傳文件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python 模擬生成動態(tài)產(chǎn)生驗證碼圖片的方法

    Python 模擬生成動態(tài)產(chǎn)生驗證碼圖片的方法

    這篇文章主要介紹了Python 模擬生成動態(tài)產(chǎn)生驗證碼圖片的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • python 對圖片進行簡單的處理

    python 對圖片進行簡單的處理

    介紹一些圖片處理的Python代碼,有了這些處理代碼,我們可以很方便的處理一些圖片,Python這里處理圖片一般都使用Pillow包,有此需求的朋友可以參考下
    2021-06-06
  • 詳解python中requirements.txt的一切

    詳解python中requirements.txt的一切

    最近學習到了python中的requirements.txt,或許是因為太簡單了,網(wǎng)上沒有搜到比較完整的介紹,所以這篇文章主要介紹了關于python中requirements.txt的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • Django3基于WebSocket實現(xiàn)WebShell的詳細過程

    Django3基于WebSocket實現(xiàn)WebShell的詳細過程

    最近工作中需要開發(fā)前端操作遠程虛擬機的功能,簡稱WebShell,普通應用大部分用的都是wsgi.py配合nginx部署線上服務. 這次主要使用asgi.py,具體實現(xiàn)過程跟隨小編一起看看吧
    2021-08-08
  • 關于Python中空格字符串處理的技巧總結(jié)

    關于Python中空格字符串處理的技巧總結(jié)

    在我們?nèi)粘9ぷ髦薪?jīng)常會遇到字符串處理,大家應該都不陌生,但空格字符串呢?會不會就不太熟悉了呢?所以下面這篇文章就來給大家總結(jié)了關于Python中空格字符串處理的技巧,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 淺談Python的異常處理

    淺談Python的異常處理

    這篇文章主要介紹了淺談Python的異常處理的相關資料,需要的朋友可以參考下
    2016-06-06
  • 在python中pandas的series合并方法

    在python中pandas的series合并方法

    今天小編就為大家分享一篇在python中pandas的series合并方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python異常處理try語句應用技巧實例探究

    Python異常處理try語句應用技巧實例探究

    異常處理在Python中是至關重要的,try-except是用于捕獲和處理異常的核心機制之一,本文就帶大家深入了解如何使用try-except,處理各種異常情況
    2024-01-01
  • Python?Pandas條件篩選功能

    Python?Pandas條件篩選功能

    這篇文章主要介紹了Python?Pandas條件篩選功能,篩選是在平時的工作中使用非常頻繁的功能了,下文詳細的相關資料介紹,需要的小伙伴可以參考一下
    2022-03-03

最新評論