日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python迭代器什么时候用_python迭代器与生成器用途是什么

發(fā)布時(shí)間:2023/12/31 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python迭代器什么时候用_python迭代器与生成器用途是什么 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python迭代器的用途:用next函數(shù)獲取下一個(gè)元素,只能向前取值,不會(huì)后退。python生成器的用途:動(dòng)態(tài)提供數(shù)據(jù),調(diào)用return生成一個(gè)StopIteration異常,通知next(it)函數(shù)不再提供數(shù)據(jù)。

一、迭代器

什么是迭代器

迭代器是指用iter(可迭代對(duì)象)函數(shù)返回的對(duì)象(實(shí)例)

迭代器可以用next(it)函數(shù)獲取可迭代對(duì)象的數(shù)據(jù)

迭代器函數(shù):

iter(iterable)從可迭代對(duì)象中返回一個(gè)迭代器,iterable必須是一個(gè)能提供迭代器的可迭代對(duì)象

next(iterator)從迭代器iterator中獲取下一條記錄,如果無(wú)法獲取下一條記錄,則觸發(fā)StopIteration異常

說(shuō)明:

迭代器是訪問(wèn)可迭代對(duì)象的一種方式

迭代器只能向前取值,不會(huì)后退

用iter函數(shù)可以返回一個(gè)可迭代對(duì)象的迭代器

示例:L?=?[2,3,4]或者?L?=?range(2,5)

it?=?iter(L)#使用iter函數(shù)使it綁定一個(gè)迭代器對(duì)象

next(it)#返回2

next(it)#返回3

next(it)#返回4

next(it)#觸發(fā)StopIteration異常

迭代器的用途:

迭代器對(duì)象能用next函數(shù)獲取下一個(gè)元素

示例:#此示例示意用迭代器來(lái)訪問(wèn)可迭代對(duì)象

#用for語(yǔ)句訪問(wèn)可迭代對(duì)象L

L?=?[2,3,5,7]

for?x?in?L:

print(x)

#用while語(yǔ)句訪問(wèn)可迭代對(duì)象L

it?=?iter(L)

while?True:

try:

x?=?next(L)

print(x)

except?StopIteration:

print('終止迭代,迭代器不能提供任何數(shù)據(jù)')

break

二、生成器Generator(python2.5之后)

什么是生成器:

生成器是能夠動(dòng)態(tài)提供數(shù)據(jù)的對(duì)象(不是一次性生成從而不占據(jù)內(nèi)存空間),生成器對(duì)象也是可迭代對(duì)象(實(shí)例)

生成器有兩種:

生成器函數(shù)

生成器表達(dá)式

生成器函數(shù)定義:

含有yield語(yǔ)句的函數(shù)是生成器函數(shù),此函數(shù)被調(diào)用時(shí)將返回一個(gè)生成器對(duì)象

yield語(yǔ)句

語(yǔ)法:yield 表達(dá)式

說(shuō)明:yield用于def函數(shù)中,目的是將此函數(shù)作為生成器函數(shù)使用

yield用來(lái)生成數(shù)據(jù),供迭代器next(it)函數(shù)使用

實(shí)例:#此示例示意生成器函數(shù)的定義及示意

def?myyield():

'''此函數(shù)為生成器函數(shù)'''

yield?2#生成2

yield?3#生成3

yield?5#生成5

#用for語(yǔ)句訪問(wèn)myyield函數(shù)

for?x?in?myyield():

print(x)

#用迭代器訪問(wèn)

gen?=?myyield()

it?=?iter(gen)

next(it)

生成器函數(shù)說(shuō)明:

(1)生成器函數(shù)的調(diào)用將返回一個(gè)生成器對(duì)象,生成器對(duì)象是一個(gè)可迭代對(duì)象

(2)在生成器函數(shù)調(diào)用return時(shí)會(huì)生成一個(gè)StopIteration異常來(lái)通知next(it)函數(shù)不再能提供數(shù)據(jù)

示例:#寫(xiě)一個(gè)myinteger(n)函數(shù)

def?myinteger(n):

for?x?in?range(n):

yield?x

#for循環(huán)訪問(wèn)生成器

for?x?in?myinteger(int(input('請(qǐng)輸入整數(shù):')))

print(x)

#用迭代器訪問(wèn)

it?=?iter(myinteger(10))

while?True:

print(next(it))#到10時(shí)發(fā)生StopIteration錯(cuò)誤

生成器表達(dá)式:

語(yǔ)法:(表達(dá)式 for 變量 in 可迭代對(duì)象 [if 真值表達(dá)式])

作用:用推導(dǎo)式的形式生成一個(gè)新的生成器

示例:gen?=?(x**2?for?x?in?range(1,4))#并沒(méi)有生成數(shù)據(jù)

#gen?=?[x**2?for?x?in?range(1,4)]#先在內(nèi)存中生成數(shù)據(jù)

it?=?iter(gen)

next(it)#1

next(it)#4

next(it)#9

next(it)#StopIteration

列表推導(dǎo)式和生成表達(dá)式的區(qū)別:

生成器是動(dòng)態(tài)生成的,現(xiàn)用現(xiàn)生成,列表表達(dá)式是靜態(tài)的。

示例:

L?=?[1,2,3,4]

gen?=?(x?for?x?in?L)#gen綁定生成器

lst?=?[x?for?x?in?L]#lst綁定列表

L[1]?=?222#改變?cè)斜淼牡诙€(gè)元素

for?x?in?lst:

print(x)#1?2?3?4不變

for?x?in?gen:

print(x)#1?222?3?4?,第二個(gè)數(shù)是222

迭代工具函數(shù):

迭代工具函數(shù)的作用是生成一個(gè)個(gè)性化的可迭代對(duì)象

函數(shù):

zip( iter1 [,iter2,iter3,…])返回一個(gè)zip對(duì)象,此對(duì)象用于生成一個(gè)元組,此元組的個(gè)數(shù)由最小的可迭代對(duì)象決定

enumerate(iterable[,start])生成帶索引的枚舉類(lèi)型,返回迭代類(lèi)型為索引-值隊(duì)(index,value)對(duì),默認(rèn)索引從零開(kāi)始,也可以使用start綁定

示例1:numbers?=?[10086,10000,10010,95588]

names?=?['中國(guó)移動(dòng)','中國(guó)電信','中國(guó)聯(lián)通']

for?x?in?zip(numbers,names):

print(x)

#生成元組:

#(10086,'中國(guó)移動(dòng)')

#(10000,'中國(guó)電信')

#(10010,'中國(guó)移動(dòng)')

#for?n,a?in?zip(numbers,names):

#print(n,a)

#d?=?dict(zip(names,number))生成字典

#for?x?in?zip(range(10),numbers,names):

#?print(x)x為三個(gè)對(duì)象組成的一個(gè)元組

示例2:#實(shí)現(xiàn)機(jī)制

def?myzip(iter1,iter2):

it1?=?iter(iter1)

it2?=?iter(iter2)

while?True:

x?=?next(it1)

y?=?next(it2)

yield?(x,y)

for?x?in?myzip(range(100),range(50))

#示例3:

names?=?list('string')

for?x?in?enumerate(names,start?=?100):

print(x)#指定start會(huì)使索引從start開(kāi)始

#(1000,'s')?(101,'t')..返回元組的索引-值對(duì),默認(rèn)索引從0開(kāi)始

#index?=?element?=?x

#print('索引是',index,'對(duì)應(yīng)的元素是',element)推薦課程:python基礎(chǔ)語(yǔ)法全講解視頻(馬哥教育2014版)

總結(jié)

以上是生活随笔為你收集整理的python迭代器什么时候用_python迭代器与生成器用途是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月丁香花 | 97黄色片| 成人深夜影院 | 六月丁香av | 95视频在线观看 | 青青伊人网| 97免费超碰| 欧美日韩成人一区二区 | 亚洲91色 | 国产亚洲系列 | www国产免费 | 日本美女一区二区三区 | 日本在线一区二区 | 屁屁影院第一页 | 五月亚洲综合 | 日韩精品视频在线播放 | 爱爱爱免费视频 | 亚洲国产精品一区二区久久hs | 椎名空在线播放 | 超碰在线中文 | 激情五月亚洲 | 青青草视频播放器 | 国产精品美女久久久久图片 | 波多野结衣在线观看一区二区三区 | 欧美在线视频二区 | 精品一区二区人妻 | 国产一区二区日韩 | 日韩诱惑| 女优视频在线观看 | 国产馆在线观看 | 日韩欧美精品在线播放 | 久久mm| 成人精品视频一区二区三区尤物 | 视屏一区 | 在线观看www | 国产精品视频久久久 | 91伊人网| 麻豆三级视频 | 一级黄色免费观看 | 国内精品福利视频 | 亚洲av日韩精品久久久久久久 | 青青草原亚洲视频 | a天堂v | 久久高潮视频 | 啪啪网站免费看 | 亚洲图片在线播放 | 久久99精品久久久久久园产越南 | 国产大片一区二区三区 | 丰满岳乱妇一区二区 | 光溜溜视频素材大全美女 | 日本毛片在线观看 | 亚洲一区二区三区三州 | 欧美激情综合五月色丁香 | 91精品国产色综合久久不8 | 成人香蕉视频 | 老头把女人躁得呻吟 | 国产精品伦理一区二区 | 你懂的亚洲 | 国产乱淫av片免费 | 国产精品七区 | 男ji大巴进入女人视频 | 久操热 | 精品国产综合区久久久久久 | 久一久久 | 久久伊人爱 | 长篇h版少妇沉沦交换 | 国产精品99久久久 | 国产高潮又爽又无遮挡又免费 | 夜夜精品一区二区无码 | 亚色视频在线 | 国产欧美一区二区在线观看 | 久久精品aⅴ无码中文字字幕重口 | 四虎黄网 | 超碰在线98 | av高清| 日韩欧美猛交xxxxx无码 | 噜噜色网| 亚洲精华国产精华精华液网站 | 亚洲激情另类 | 一级黄色片网站 | 亚洲国产精品尤物yw在线观看 | 天堂在线视频观看 | 欧美日韩亚洲综合 | 俄罗斯毛片 | 美女下部无遮挡 | 日本五十肥熟交尾 | 黄色片网站在线播放 | 成人依依网 | 日日摸夜夜爽 | 激情网站视频 | 一区二区三区四区精品视频 | 亚洲视频网站在线观看 | 超能一家人电影免费喜剧在线观看 | 日韩久久久 | 伊人婷婷久久 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | 欧美xo影院 | eeuss国产一区二区三区 | 亚洲第一视频区 |