淺談python可迭代對象,迭代器

来源:https://www.cnblogs.com/machaos/archive/2018/01/27/8362317.html
-Advertisement-
Play Games

迭代器 迭代器是一種更抽象的概念。 迭代是訪問數據的一種方式。迭代器是一個可以記住遍歷位置的對象,迭代器對象從集合的第一個元素開始訪問,直到所有的元素訪問完後結束。迭代器只能往前去訪問下一個元素,不能後退。 迭代器就是可迭代對象調用iter()方法,返回了一個迭代器 那麼什麼是可迭代對象呢? 像字元 ...


 

 

迭代器

  迭代器是一種更抽象的概念。

  迭代是訪問數據的一種方式。迭代器是一個可以記住遍歷位置的對象,迭代器對象從集合的第一個元素開始訪問,直到所有的元素訪問完後結束。迭代器只能往前去訪問下一個元素,不能後退

  迭代器就是可迭代對象調用iter()方法,返回了一個迭代器

  那麼什麼是可迭代對象呢?

    像字元串列表字典元祖等這些容器可以使用for迴圈進行遍歷依次拿到容器中的數據,我們把這樣的過程稱為迭代。你也可以理解為只要能用for迴圈語句進行遍歷的其實就是可迭代對象。你也可以查看創建這個對象的類中是否實現iter()方法,只要實現了這個方法那麼他就是一個可迭代對象

  可迭代對象的本質就是向我們提供了一個中間人,即迭代器幫助我們進行迭代遍歷。可迭代對象通過調用自身的iter()方法向我們返回一個迭代器。我們在迭代可迭代對象的時候實際上就是先獲取該對象提供的一個迭代器,然後通過迭代器來依次獲取對象中的每一個數據

  比如說查看產看創建my_list這個對象的類

  

   list這個類中就實現了iter()方法

  

  也可以使用istance()這個內置函數來判斷一個對象是否是可迭代對象

  

  當然也可以使用這個內置函數判讀這個對象是不是迭代器。

  

  想要獲取迭代器中的數據可以使用next()方法

  

  使用next()方法的時候迭代器會給你返回一個迭代器中的數據,並且他會記錄當前所在位置的下標,當你下一次再調用的時候他會給你返回上次記錄的下標的下一個數據,以此類推,直到所有迭代器中的數據被訪問完後停止

  

  當迭代器中的數據都被訪問完後你還想繼續訪問的話,那麼他會給你拋出一個異常,例如

  

  其實for迴圈的本質就是,當我們使用for迴圈去遍歷一個可迭代對象的時候,首先會通過調用可迭代對象的iter()方法返回的迭代器,然後用next()方法依次去訪問迭代器中的每一個數據,並且把取到的數據賦值給for後面的那個臨時變數來保存,當遇到StopIteration異常後迴圈就會結束。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 數組的定義 之前學習的數據類型,只能存儲一個值(字元串為一個值)。如果我們想存儲多個值,就可以使用數組。 數組的定義 (1)字面量定義。舉例: (2)對 ...
  • 1. 問題 當使用tab切換時,部分特殊場景需要獲取當前元素的類名或者id。 2.解決思路,tab切換是綁定函數,函數會傳遞過去當前對象,通過當前對象獲取對象屬性 vue部分代碼:本項目是在vue-cli下運行,因此vue的初始化函數略有差異。 ...
  • 到了年底,開發任務相對較少,閑來看了幾篇優秀的代碼優化文章,現在分享出來,記錄一下,以便以後再次重讀 1.反覆推敲代碼 2.寫優雅的代碼 3.寫模塊化的代碼 4.寫可讀的代碼 5.寫簡單的代碼 6.寫直觀的代碼 7.寫無懈可擊的代碼 8.正確處理錯誤 總結: 世界上有兩種“沒有bug”的代碼。一種是 ...
  • win10系統配置虛擬主機1.用記事本或Sublime Text打開httpd.confctrl + f 搜索httpd-vhosts.conf 將#Include conf/extra/httpd-vhosts.conf的#號去掉保存 2.打開extra/httpd-vhosts.conf添加如下 ...
  • Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15566 Accepted: 7900 Description Given n, a positive integer, how many positive i ...
  • 一.路由配置系統 1.1 基本認識 a. URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的視圖函數之間的映射表 b. URLconf 在請求的URL 上查找,將它當做一個普通的Python 字元串。不包括GET和POST參數以及功能變數名稱。 例如,htt ...
  • 一.介紹 在HTML的基礎上加上模板語言(包括:會被替換掉的變數和標簽) 二.模板語法之變數( {{ }} ) 2.1 基本用法 views: template: 2.2 過濾器 語法: 三.模板語法之標簽( {% %} ) 3.1 標簽操作 3.2 模板繼承 模版繼承可以讓您創建一個基本的“骨架” ...
  • 1.開啟apache模塊 在apache配置文件 #LoadModule rewrite_module modules/mod_rewrite.so 前面的#去掉 然後添加 我的E:/Apache/Apache24/htdocs/ 為網站目錄 到apache配置文件,隨便放,為了好找我放在最下麵 < ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...