电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

正確理解python迭代器與生成器

瀏覽:52日期:2022-06-16 17:35:17
目錄一、迭代器二、生成器三、生成器函數3.1、zip(可迭代對象1,可迭代對象2......)3.2、enumerate(iterable[,start])一、迭代器

迭代器就是iter(可迭代對象函數)返回的對象,說人話.......可迭代對象由一個個迭代器組成

可以用next()函數獲取可迭代對象的數據

迭代是訪問集合元素的一種方式(因為集合是無序的,所以不能索引),naxt(集合),

迭代器對象從集合的第一個元素開始訪問,直到所有元素被訪問結束,迭代器只能往前不會往后退

迭代器是一個可以記住遍歷的位置的對象,迭代器只能一個一個出,前一秒還沒有這個值,等到next()的時候才生成

迭代器有兩個基本方法:iter()和next()

iter()生成一個迭代器 next()從迭代器中獲取寫一條記錄,如果無法獲取寫一條記錄,則觸發StopIteration異常

有序序列:字符串、列表、元組對象都可用于創建迭代器

L = [1,2,3,4]it = iter(L) #創建迭代器對象print(next(it)) #輸出迭代器的寫一個對象print(next(it))

迭代器對象使用for語句進行遍歷

li = [5,6,7,8]it = iter(li)for x in it: print(x,end = ’ ’)

迭代器對象使用while語句進行遍歷

lis = [7,8,9,0]it = iter(lis)while True: try:print(next(it)) except StopIteration:break二、生成器

在python中,使用了yield的函數被稱為生成器(generator)此函數被調用時返回一個生成器對象

生成器是一個返回迭代器的函數,生成器 生成 迭代器對象,只能用來迭代操作

生成器能讓函數停下下,想進想出,很隨便,前一秒數據根本不存在,這一秒推算出來的

在調用生成器運行的過程中,每次遇到yidld時函數會停下來,返回yield的值,相當于print返回print的值一樣

并在下一次執行next()方法或者寫一次循環時從當前位置繼續運行(繼續打印下一個值)

生成器用于函數中,會把函數當做生成器來使用,函數出一個值,主函數調取一個值

生成器調用return會觸發一個StopIteration異常

普通方法生成菲波那切數列

def fun(n): a,b,c = 0,1,0 while c<n:print(b) # 打印菲波那切數列a,b = b,a+bc +=1fun(10)

用生成器的方法生成菲波那切數列

def fun(n): a,b,c = 0,1,0 while c<n:yield b # 生成器a,b = b,a+bc +=1# print(fun(10))# <generator object fun at 0x000001ED43A48A40>t = fun(10) # t是一個迭代器,由生成器返回生成print(next(t)) # 1print(next(t)) # 1print('中間可以插入代碼') # 中間可以插入代碼print(next(t)) # 2print(next(t)) # 3for i in t: print(i)# 8# 13# 21# 34# 55

print(fun(10))

# <generator object fun at 0x000001ED43A48A40>

# 這是一條內存,你要用函數來訪問里面的值,next(fun(10))

生成器表達式:

語法:(表達式 for 變量 in 可迭代對象 [if 真值表達式]) []里的內容可以省略 作用:用推導式的形式生成一個新的生成器,要取值的時候,要iter變成迭代器,用next取值 優點:不占用內存空間

迭代工具函數:生成一個個個的可迭代對象

gen = (x**2 for x in range(1, 4))it = iter(gen) # 轉成生成器next(it)# 1next(it)# 4next(it)# 9next(it)# StopIteration三、生成器函數3.1、zip(可迭代對象1,可迭代對象2......)

返回一個zip對象,此對象用于生成元組,元組的個數由最小的可迭代對象決定

numbers = [10086,10000,10010,95586]names = [’中國移動’,’中國聯通’,’中國電信’]for t in zip(numbers,names): print(t)#(10086, ’中國移動’)#(10000, ’中國聯通’)#(10010, ’中國電信’)

自定義zip函數

def myzip(iter1,iter2): it1 = iter(iter1) # 拿出一個迭代器 it2 = iter(iter2) while True:a = next(it1)b = next(it2)yield (a,b)numbers = [10086,10000,10010,95586]names = [’中國移動’,’中國聯通’,’中國電信’]for t in myzip(numbers,names): print(t)# (10086, ’中國移動’)# (10000, ’中國聯通’)# (10010, ’中國電信’)3.2、enumerate(iterable[,start])

生成帶索引的枚舉對象,返回迭代類型為索引-值對(index,value)對, 默認索引從零開始,也可以使用start綁定

names = [’中國移動’, ’中國電信’, ’中國聯通’]for x in enumerate(names): #生成迭代器 print(x)def myenumerate(iterable): it = iter(iterable) i = 0 while True:a = next(it)yield(i,a)i += 1#(0, ’中國移動’)#(1, ’中國電信’)#(2, ’中國聯通’)

以上就是正確理解python迭代器與生成器的詳細內容,更多關于python迭代器與生成器的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | loft装修,上海嘉定酒店式公寓装修公司—曼城装饰 | 电地暖-电采暖-发热膜-石墨烯电热膜品牌加盟-暖季地暖厂家 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 工业CT-无锡璟能智能仪器有限公司| 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 技德应用| 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 蒸压釜-陶粒板隔墙板蒸压釜-山东鑫泰鑫智能装备有限公司 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 |