Python的迭代器

2021-08-17 12:16:51 字數 1918 閱讀 8351

python的迭代器在for內部通過迴圈實現。python的迭代器物件必須實現__iter__()__next__()方法。 如果我們可以通過迭代器獲取乙個物件,那麼這個物件稱為「可迭代的」。很多內建的容器,比如listtuplestring等,都是可迭代的。

我們可以使用next()函式對乙個迭代器中所有的元素進行迭代,當我們到達容器尾部或者沒有元素可以迭代時,系統丟擲stopiteration

# 定義list

mylist=[1,2,3,4]

# 通過iter獲取乙個迭代器

my_iter=iter(mylist)

# 通過next()方法獲取元素

print(next(my_iter))

print(next(my_iter))

# 通過內建的__next__()方法迭代

print(my_iter.__next__())

print(my_iter.__next__())

# 如果不注釋,丟擲異常,沒有元素可以迭代了

# next(my_iter)

或者通過for迴圈實現:

my_list=[1,2,3,4,5]  

for elem in my_list:

print(elem)

iter_obj=iter(iterable)

while

true:

try:

# 獲取下乙個元素

element=next(iter_obj)

# 對元素採取一些操作

except stopiteraiton:、

# 丟擲stopiteration異常,並終止迴圈

break

通過無限迴圈,並通過呼叫next()獲取元素

我們只需要實現__iter__()__next__()方法即可。前者返回迭代器物件本身,如果需要的話,可以執行初始化操作;或者必須返回序列中的下乙個元素,如果到達容器尾部,必須丟擲stopiteration異常!

1

class

powtwo:

2"""定義迭代物件"""

3def

__init__

(self,maxn=0):

4 self._max=maxn

56def__iter__

(self):

7 self._n=0

8return self

910def__next__

(self):

11if self._n<=self._max:

12 result=2**self._n

13 self._n+=1

14return result

15else:

16raise stopiteration

1718 my_list=powtwo(4)

19 i=iter(my_list)

2021

# 通過next()方法迭代

22 print(next(i))

2324

# 通過for迴圈進行迭代,elem是__next__()返回的result

25for elem in my_list:

26 print(elem)

最後宣告一點,自己定義迭代器時,要新增終止條件,否則會出現無限迭代的情況!!!

python的迭代器 Python 迭代器

迭代器 迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等...

python的迭代器 python 迭代器

在介紹迭代器之前,先說明下迭代的概念 迭代 通過for迴圈遍歷物件的每乙個元素的過程。python的for語法功能非常強大,可以遍歷任何可迭代的物件。在python中,list tuple string dict set bytes都是可以迭代的資料型別。可以通過collections模組的iter...

python的迭代器 Python 迭代器

概述迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。延遲計算或惰性求值 lazy evaluation 迭代器不要求你事先準備好整個迭代過程中所有的元素。僅僅是在迭代至某個元素時才計算該元素,而在這之前或之後,元素可以不存在或...