python 生成器yield

生成器

創建生成器的方式

  1. 生成器推導式
  2. yield關鍵字

生成器相關方法
  1. for:循環遍歷生成器中的每一個值
  2. next:獲取生成器中的下一個值

生成器注意點
  1. 代碼執行到yield會暫停,然后把結果返回出去,下次啟動生成器會在暫停的位置繼續執行下去
  2. 生成器如果把數據生成完成,再次獲取生成器中的下一個數據會拋出一個Stoplteration異常,表示停止迭代異常
  3. while循環內部沒有處理異常操作,需要自己寫代碼添加處理異常操作
  4. for循環內部自動處理了停止迭代異常

生成器推導式
a = (i for i in range(5))print(a)
單個取值?
a = (i for i in range(5))
print(next(a))             # 0
使用for循環遍歷生成器的每一個值
a = (i for i in range(5))
for i in a:print(i)# 0
# 1
# 2
# 3
# 4

yield關鍵字

yield生成器的特征,在def函數中看見了yield關鍵字,那么這個函數就叫做生成器

使用for循環
def demo(num):for i in range(num):yield ia = demo(5)
print(a)
for i in a:print(i)# <generator object demo at 0x000001FCC28F7648>
# 0
# 1
# 2
# 3
# 4
使用while循環
import sysdef demo(num):for i in range(num):yield ia = demo(5)while True:try:print(next(a))except StopIteration:sys.exit()# 0
# 1
# 2
# 3
# 4

生成器總結

  1. 生成器是根據算法生成數據的一種機制,每次調用生成器只生成一個值,可以節省大量的內存
  2. 生成器的創建方式有兩種:生成器推導式,yield關鍵字

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20451.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20451.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20451.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

進程間通信(27000字超詳解)

&#x1f30e;進程間通信 文章目錄&#xff1a; 進程間通信 進程間通信簡介 ??????進程間通信目的 ??????初識進程間通信 ??????進程間通信的分類 匿名管道通信 ??????認識管道 ??????匿名管道 ??????匿名管道測試 ??????管道的四種…

第十五課,海龜畫圖:抬筆與落筆函數、畫曲線函數

一&#xff0c;turtle.penup()和turtle.pendown()&#xff1a;抬起與落下畫筆函數 當使用上節課學習的這個turtle.forward()&#xff1a;畫筆前進函數時&#xff0c;畫筆會朝著當前方向在畫布上留下一條指定&#xff08;像素&#xff09;長度的直線&#xff0c;但你可能發現&a…

Map Python用法:深度解析與應用探索

Map Python用法&#xff1a;深度解析與應用探索 在Python編程中&#xff0c;map() 函數是一種強大的內置高階函數&#xff0c;用于對可迭代對象中的每個元素應用指定的函數&#xff0c;并返回一個新的迭代器&#xff0c;其中包含函數應用后的結果。本文將從四個方面、五個方面…

Bean的生命周期中有哪些對外開放的接口,及各種作用

Bean的生命周期中有哪些對外開放的接口&#xff0c;及各種作用 在 Spring 框架中&#xff0c;Bean 的生命周期可以通過一系列的回調接口來管理和控制。以下是 Spring 中對外開放的主要 Bean 生命周期接口以及它們的作用&#xff1a; InitializingBean 和 DisposableBean 接口&…

C++|set、map模擬實現<——紅黑樹

目錄 一、紅黑樹的迭代器 1.1紅黑樹迭代器框架 1.2operator*() && operator->() 1.3operator() 1.4operator--() 1.5operator() && operator!() 1.6begin() && end() 二、如何用紅黑樹搭配map和set(仿函數) 三、紅黑樹封裝map和set(簡易版…

springboot + Vue前后端項目(第十三記)

項目實戰第十三記 寫在前面1.建立角色表2. 后端代碼生成2.1 RoleController 3. 前端頁面的搭建3.1 Role.vue3.2 路由3.3 Aside.vue3.4 頁面效果 4.建立菜單表5.后端代碼編寫5.1 Menu5.2 MenuController 6.前端頁面的搭建6.1 Menu.vue6.2 路由6.3 Aside.vue6.4 頁面效果 總結寫在…

keepalived安裝文檔

目錄 1、安裝環境 2、安裝keepalived 2.1 上傳keepalived安裝文件 2.2 解壓 2.3 安裝keepalived 2.4 加入開機啟動&#xff1a; 2.5 配置日志文件 2.6 打開防火墻的通訊地址 1、安裝環境 su - root yum -y install kernel-devel* yum -y install openssl-* yum -y …

vx小程序初學

小程序初學 在我還沒接觸到微信小程序之前&#xff0c;通常使用輪播要么手寫或使用swiper插件去實現&#xff0c;當我接觸到微信小程序之后&#xff0c;我看到了微信小程序的強大之處&#xff0c;讓我為大家介紹一下吧&#xff01; swiper與swiper-item一起使用可以做輪播圖 …

把自己的服務器添加到presearch節點

Presearch is a scam. Before, judging by the price of the token you should have been able to get between $150-$200 after 12-13 months of regular searches. "If you use this service for the next 11 years you will have earned $30!" Presearch大約需要…

Easy RoCE:在SONiC交換機上一鍵啟用無損以太網

RDMA&#xff08;遠程直接內存訪問&#xff09;技術是一種繞過 CPU 或操作系統&#xff0c;在計算機之間直接傳輸內存數據的技術。它釋放了內存帶寬和 CPU&#xff0c;使節點之間的通信具有更低的延遲和更高的吞吐量。目前&#xff0c;RDMA 技術已廣泛應用于高性能計算、人工智…

車流量監控系統

1.項目介紹 本文檔是對于“車流量檢測平臺”的應用技術進行匯總&#xff0c;適用于此系統所有開發&#xff0c;測試以及使用人員&#xff0c;其中包括設計背景&#xff0c;應用場景&#xff0c;系統架構&#xff0c;技術分析&#xff0c;系統調度&#xff0c;環境依賴&#xf…

MongoDB~存儲引擎了解

存儲引擎 存儲引擎是一個數據庫的核心&#xff0c;主要負責內存、磁盤里數據的管理和維護。 MongoBD的優勢&#xff0c;在于其數據模型定義的靈活性、以及可拓展性。但不要忽略&#xff0c;其存儲引擎也是插件式的存在&#xff0c;支持不同類型的存儲引擎&#xff0c;使用不同…

導線防碰撞警示燈:高壓線路安全保障

導線防碰撞警示燈&#xff1a;高壓線路安全保障 在廣袤的大地上&#xff0c;高壓線路如同血脈般縱橫交錯&#xff0c;然而&#xff0c;在這看似平靜的電力輸送背后&#xff0c;卻隱藏著不容忽視的安全隱患。特別是在那些輸電線路跨越道路、施工等區域的路段&#xff0c;線下超…

頂點著色技術在AI去衣中的作用

在當今的數字時代&#xff0c;人工智能&#xff08;AI&#xff09;已經滲透到我們生活的方方面面&#xff0c;從智能家居到自動駕駛汽車&#xff0c;再到在線購物推薦。然而&#xff0c;AI的影響遠不止于此。近年來&#xff0c;AI在圖像處理和計算機視覺領域的應用取得了顯著進…

c++字符串相關接口

c字符串相關接口 1.str2wstr(str轉換wstr)2.wstr2str(str轉換wstr)3.Utf8ToAsi(Utf8轉換ANSI)4.AsiToUtf8(ANSI轉換Utf8)5.stringformatA/stringformatW(按照指定的格式格式化字符串)6.GetStringBetween(獲取cStart cEnd之間的字符串)7.Char2Int(char轉int)8.Str2Bin(字符串轉換…

視覺語言大模型llava學習

1. 拉取 https://github.com/haotian-liu/LLaVA 視覺語言大模型是人工智能領域一種重要的多模態模型&#xff0c;它結合了計算機視覺&#xff08;CV&#xff09;和自然語言處理&#xff08;NLP&#xff09;的技術&#xff0c;使得模型能夠同時理解圖像和文本信息。這類模型在多…

hadoop部署

需要3臺機子&#xff0c;Linux為centos7 分別設置靜態ip&#xff0c;設置主機名,配置主機名映射&#xff0c;配置ssh免密登入 hadoop1 192.168.1.7 hadoop2 192.168.1.8 hadoop3 192.168.1.9 vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE"Ethernet" PROX…

Kotlin 泛型

文章目錄 定義泛型屬性泛型函數泛型類或接口 where 聲明多個約束泛型具體化in、out 限制泛型輸入輸出 定義 有時候我們會有這樣的需求&#xff1a;一個類可以操作某一類型的對象&#xff0c;并且限定只有該類型的參數才能執行相關的操作。 如果我們直接指定該類型Int&#xff…

機器人抓取檢測(Robot Grasping Detection)

目錄 前言 一、物體檢測 二、抓取點生成 三、運動規劃 四、控制 五、總結 前言 機器人抓取檢測&#xff08;Robot Grasping Detection&#xff09;是指通過計算機視覺和機器學習技術&#xff0c;自動識別并確定機器人如何抓取物體的一種技術。這個過程涉及多個步驟和關鍵…

【Python系列】Python 中方法定義與方法調用詳解

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…