久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python|認(rèn)識(shí)可迭代對(duì)象與迭代器

 算法與編程之美 2020-08-08

問(wèn)題描述

可迭代對(duì)象指的是定義了_ _ iter _ _ 方法的對(duì)象,,調(diào)用該方法會(huì)返回一個(gè)迭代器對(duì)象可迭代對(duì)象,,例如:list列表,、tuple元組、帶有上述iter方法的對(duì)象等等,。

迭代器就是定義_ _ next _ _ 方法的對(duì)象,。每次調(diào)用上述方法就返回迭代器一個(gè)值,沒(méi)有就拋出StopIteration異常,。

解決方案

如果給定一個(gè)listtuple,,我們可以for循環(huán)來(lái)遍歷這個(gè)listtuple,這種遍歷我們稱為迭代(Iteration),。在Python中,,迭代是forin來(lái)完成的,,而很多語(yǔ)言比如C語(yǔ)言,迭代list是通過(guò)下標(biāo)完成的

一類是集合數(shù)據(jù)類型,,如list,、tupledict,、set,、str等;一類是generator,,包括生成器和帶yieldgenerator function,。這些可以直接作用于for循環(huán)的對(duì)象統(tǒng)稱為可迭代對(duì)象:Iterable

創(chuàng)建方法

1 可迭代對(duì)象

Pythonfor循環(huán)抽象程度要高于Cfor循環(huán),因?yàn)?/span>Pythonfor循環(huán)不僅可以用在listtuple上,,還可以作用在其他可迭代對(duì)象上,。list這種數(shù)據(jù)類型雖然有下標(biāo),但很多其他數(shù)據(jù)類型是沒(méi)有下標(biāo)的,,但是,,只要是可迭代對(duì)象,無(wú)論有無(wú)下標(biāo),,都可以迭代,,比如dict就可以迭代:

d={‘a:1,b:2,c:3}

for key in d:

print(key)

a

c

b

 因?yàn)?/span>dict的存儲(chǔ)不是按照list的方式順序排列,所以,,迭代出的結(jié)果順序很可能不一樣,。

默認(rèn)情況下,dict迭代的是key,。如果要迭代value,,可以用for value in d.values(),如果要同時(shí)迭代keyvalue,,可以用for k,v in d.items(),。

由于字符串也是可迭代對(duì)象,因此,,也可以作用于for循環(huán):

for ch in 'ABC':

print(ch)

...

A

B

C

判斷一個(gè)對(duì)象是否是可迭代對(duì)象可以通過(guò)collections模塊的Iterable類型判斷

from collections import Iterable

print(isinstance('abc', Iterable))# str是否可迭代

True

Print(isinstance([1,2,3], Iterable))# list是否可迭代

True

Print(isinstance(123, Iterable)) # 整數(shù)是否可迭代

False

2 迭代器

迭代器可以由可迭代對(duì)象通過(guò)內(nèi)置函數(shù)iter()函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)接受一個(gè)可迭代對(duì)象,,返回一個(gè)迭代器對(duì)象,。實(shí)際上,iter()函數(shù)內(nèi)部調(diào)用可迭代對(duì)象的——iter——方法,。而前面在可迭代對(duì)象中就提到,,該方法會(huì)返回一個(gè)迭代器對(duì)象

可以被next()函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator

可以使用isinstance()判斷一個(gè)對(duì)象是否是Iterator對(duì)象:

from collections import Iterator

print( isinstance((x for x in range(10)), Iterator))

True

print(isinstance([], Iterator))

False

print(isinstance({}, Iterator))

False

print(isinstance('abc', Iterator))

False

結(jié)語(yǔ)

凡是可作用于for循環(huán)的對(duì)象都是Iterable類型,;凡是可作用于next()函數(shù)的對(duì)象都是Iterator類型,,它們表示一個(gè)惰性計(jì)算的序列,;集合數(shù)據(jù)類型如listdict,、str等是Iterable但不是Iterator,,不過(guò)可以通過(guò)iter()函數(shù)獲得一個(gè)Iterator對(duì)象。Pythonfor循環(huán)本質(zhì)上就是通過(guò)不斷調(diào)用next()函數(shù)實(shí)現(xiàn)的,。



END

主  編   |   王文星

責(zé)  編   |   李    靖

 where2go 團(tuán)隊(duì)


微信號(hào):算法與編程之美          

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多