最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

概述

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

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

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

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

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é)費(fèi)用
 self.return_amount = return_amount # 返還金額

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

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

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

直接測(cè)試一下:

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

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

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

其中, __iter__返回iterator對(duì)象, __next__則返回迭代過程的下一個(gè)元素。

1. 讓列表成為iterator

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

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

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

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

2. 自定義iterator對(duì)象

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

我們接下來定義一個(gè)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]

運(yùn)行結(jié)果如:

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

總結(jié)

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

相關(guān)文章

  • python 同時(shí)讀取多個(gè)文件的例子

    python 同時(shí)讀取多個(gè)文件的例子

    今天小編就為大家分享一篇python 同時(shí)讀取多個(gè)文件的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python3 selenium自動(dòng)化測(cè)試 強(qiáng)大的CSS定位方法

    python3 selenium自動(dòng)化測(cè)試 強(qiáng)大的CSS定位方法

    今天小編就為大家分享一篇python3 selenium自動(dòng)化測(cè)試 強(qiáng)大的CSS定位方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 在Python3 numpy中mean和average的區(qū)別詳解

    在Python3 numpy中mean和average的區(qū)別詳解

    今天小編就為大家分享一篇在Python3 numpy中mean和average的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python任務(wù)調(diào)度實(shí)例分析

    python任務(wù)調(diào)度實(shí)例分析

    這篇文章主要介紹了python任務(wù)調(diào)度實(shí)現(xiàn)方法,實(shí)例分析了任務(wù)調(diào)度的原理與Python實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-05-05
  • Python+Tkinter創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序

    Python+Tkinter創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序

    這篇文章主要為大家詳細(xì)介紹了如何使用 Python 的 Tkinter 庫創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序,它可以在指定的時(shí)間播放一個(gè)聲音來提醒你,感興趣的可以學(xué)習(xí)一下
    2023-04-04
  • Python的裝飾器用法學(xué)習(xí)筆記

    Python的裝飾器用法學(xué)習(xí)筆記

    這篇文章主要介紹了Python的裝飾器用法學(xué)習(xí)筆記,裝飾器的使用是Python編程中的高級(jí)技巧,需要的朋友可以參考下
    2016-06-06
  • Python中IPYTHON入門實(shí)例

    Python中IPYTHON入門實(shí)例

    這篇文章主要介紹了Python中IPYTHON的用法入門,較為詳細(xì)的分析了IPYTHON的配置及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • Python中CairoSVG庫的使用教程

    Python中CairoSVG庫的使用教程

    CairoSVG是一個(gè)強(qiáng)大的Python庫,用于將SVG圖像轉(zhuǎn)換為PNG、PDF、PS等格式,本文就來介紹一下Python中CairoSVG庫的使用教程,感興趣的可以了解一下
    2025-01-01
  • Python繪制數(shù)據(jù)動(dòng)態(tài)圖的方法詳解

    Python繪制數(shù)據(jù)動(dòng)態(tài)圖的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言繪制好看的數(shù)據(jù)動(dòng)態(tài)圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下
    2022-07-07
  • python簡(jiǎn)單貪吃蛇開發(fā)

    python簡(jiǎn)單貪吃蛇開發(fā)

    這篇文章主要為大家詳細(xì)介紹了python簡(jiǎn)單貪吃蛇開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論

武义县| 屯留县| 海丰县| 苏尼特右旗| 诸暨市| 津市市| 北流市| 嘉祥县| 东兴市| 临湘市| 宜春市| 新乡县| 孙吴县| 三门峡市| 井研县| 清水县| 台北市| 芷江| 宣武区| 黎平县| 当阳市| 遵化市| 商都县| 屏山县| 方城县| 绥中县| 长寿区| 婺源县| 灵台县| 武隆县| 宁蒗| 呼图壁县| 华池县| 长汀县| 宁城县| 三门峡市| 紫云| 定远县| 湘阴县| 织金县| 邯郸县|