python 手動遍歷迭代器

2021-10-12 15:53:40 字數 1389 閱讀 3454

想遍歷乙個可迭代物件中的所有元素,但是卻不想使用for 迴圈

為了手動的遍歷可迭代物件,使用next() 函式並在**中捕獲stopiteration 異常。比如,下面的例子手動讀取乙個檔案中的所有行

def

manual_iter()

:with

open

('/etc/passwd'

)as f:

try:

while

true

: line =

next

(f)print

(line, end='')

except stopiteration:

pass

通常來講, stopiteration 用來指示迭代的結尾。然而,如果你手動使用上面演示的next() 函式的話,你還可以通過返回乙個指定值來標記結尾,比如none 。下面是示例:

'''

'''with

open

('/etc/passwd'

)as f:

while

true

: line =

next

(f)if line is

none

:break

print

(line, end=

'')

大多數情況下,我們會使用for 迴圈語句用來遍歷乙個可迭代物件。但是,偶爾也需要對迭代做更加精確的控制,這時候了解底層迭代機制就顯得尤為重要了。下面的互動示例向我們演示了迭代期間所發生的基本細節:

>>

> items =[1

,2,3

]>>

>

# get the iterator

>>

> it =

iter

(items)

# invokes items.__iter__()

>>

>

# run the iterator

>>

>

next

(it)

# invokes it.__next__()

1>>

>

next

(it)

2>>

>

next

(it)

3>>

>

next

(it)

traceback (most recent call last)

:file ""

, line 1,in

stopiteration

>>

>

python 手動遍歷迭代器

想遍歷乙個可迭代物件中的所有元素,但是卻不想使用for 迴圈 為了手動的遍歷可迭代物件,使用next 函式並在 中捕獲stopiteration 異常。比如,下面的例子手動讀取乙個檔案中的所有行 def manual iter with open etc passwd as f try while ...

迭代器遍歷

iterator物件稱為迭代器,主要用於遍歷collection 集合中的元素。所有實現了collection介面的集合類都有乙個iterator 方法,用以返回乙個實現了lterator介面的物件,即可以返回乙個迭代器。lterator的結構.iterator僅用於遍歷集合,iterator本身並...

for 迭代器遍歷list map

1 map與list區別 list是物件集合,允許物件重複。map是鍵值對的集合,不允許key重複 2 list 與 list 型別 list不限制型別,也就是object型別 list 型別 限定在某一型別,使用時不需要強轉,避免執行錯誤 注 map 與 map也是同樣的 demo1 遍歷list...