python學習之迭代器

2021-10-23 05:37:08 字數 1142 閱讀 8723

在介紹迭代器時候,首選介紹兩個概念,

from collections.abc import iterable

from collections.abc import iterator

print

(isinstance([

], iterable)

)print

(isinstance

(, iterable)

)print

(isinstance

('abc'

, iterator)

)def

fun(arg)

:for i in

range

(arg)

:yield i

g = fun(6)

print

(type

(g))

print

(isinstance

(g, iterable)

)print

(isinstance

(g, iterator)

)

上面執行的結果

集合資料型別如list、dict、str等是iterable但不是iterator,不過可以通過iter()函式獲得乙個iterator物件。

python的for迴圈本質上就是通過不斷呼叫next()函式實現的,例如

for x in[1

,2,3

,4,5

]:pass

完全等價於

# 首先獲得iterator物件:

it =

iter([

1,2,

3,4,

5])# 迴圈:

while

true

:try

:# 獲得下乙個值:

x =next

(it)

except stopiteration:

# 遇到stopiteration就退出迴圈

break

python學習之迭代器

4.5.1 可迭代物件 字面意思分析 可以重複的迭代的實實在在的東西。list,dict keys values items tuple,str,set,range,檔案控制代碼 待定 專業角度 內部含有 iter 方法的物件,就是可迭代物件。內建函式 dir print dir str 判斷乙個物...

python之迭代器

可迭代物件就是序列觀念的通用化,如果物件是實際儲存的序列,或者可以在迭代工具環境 eg for迴圈 中一次產生乙個結果的物件,就可看成是可迭代的。可迭代物件包括實際序列和按照需求而計算的虛擬序列。常見的迭代工具 for迴圈 列表解析 in成員關係測試以及map內建函式等。1.檔案迭代器 readli...

Python之迭代器

我們已經知道,可以直接作用於for迴圈的資料型別有以下幾種 一類是集合資料型別,如list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function。這些可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。可以使用...