五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

6.2 迭代

2021-09-02 16:37 作者:海鷗之道  | 我要投稿

如果給定一個(gè)listtuple,我們可以通過(guò)for循環(huán)來(lái)遍歷這個(gè)listtuple,這種遍歷我們稱(chēng)為迭代(Iteration)。

在Python中,迭代是通過(guò)for ... in來(lái)完成的,而很多語(yǔ)言比如C語(yǔ)言,迭代list是通過(guò)下標(biāo)完成的,比如C代碼:

for (i=0; i<length; i++)

{

? ?n = list[i];?

}

可以看出,Python的for循環(huán)抽象程度要高于C的for循環(huán),因?yàn)镻ython的for循環(huán)不僅可以用在listtuple上,還可以作用在其他可迭代對(duì)象上。

list這種數(shù)據(jù)類(lèi)型雖然有下標(biāo),但很多其他數(shù)據(jù)類(lèi)型是沒(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)?code>dict的存儲(chǔ)不是按照list的方式順序排列,所以,迭代出的結(jié)果順序很可能不一樣。

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

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

>>> for ch in 'ABC':

... ? ?print(ch)

...

A?

B?

C

所以,當(dāng)我們使用for循環(huán)時(shí),只要作用于一個(gè)可迭代對(duì)象,for循環(huán)就可以正常運(yùn)行,而我們不太關(guān)心該對(duì)象究竟是list還是其他數(shù)據(jù)類(lèi)型。

那么,如何判斷一個(gè)對(duì)象是可迭代對(duì)象呢?方法是通過(guò)collections.abc模塊的Iterable類(lèi)型判斷:

>>> from collections.abc import Iterable

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

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

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

最后一個(gè)小問(wèn)題,如果要對(duì)list實(shí)現(xiàn)類(lèi)似Java那樣的下標(biāo)循環(huán)怎么辦?Python內(nèi)置的enumerate函數(shù)可以把一個(gè)list變成索引-元素對(duì),這樣就可以在for循環(huán)中同時(shí)迭代索引和元素本身:

>>> for i, value in enumerate(['A', 'B', 'C']):

... ? ?print(i, value)?

...

0 A

1 B

2 C

上面的for循環(huán)里,同時(shí)引用了兩個(gè)變量,在Python里是很常見(jiàn)的,比如下面的代碼:

>>> for x, y in [(1, 1), (2, 4), (3, 9)]:

... ? ?print(x, y)?

...

1 1

2 4

3 9


6.2 迭代的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
洪湖市| 通许县| 大邑县| 扎兰屯市| 越西县| 金寨县| 绥棱县| 封开县| 通化市| 金阳县| 佛冈县| 开封市| 兴化市| 历史| 隆尧县| 乃东县| 三门峡市| 淮北市| 澎湖县| 惠来县| 衢州市| 共和县| 清水河县| 疏附县| 罗山县| 汾阳市| 蓬安县| 方山县| 沙坪坝区| 交城县| 庆安县| 平武县| 修文县| 永吉县| 静安区| 电白县| 思南县| 阿克陶县| 桐城市| 牡丹江市| 元氏县|