每天學點Python之Iterator

2022-09-22 22:27:16 字數 1129 閱讀 4861

我們經常需要遍歷乙個物件中的元素,在python中這種功能是通過迭代器來實現的。

每乙個迭代器可以通過反覆呼叫迭代器的__next__()方法來返回建立該迭代器的物件中的後繼值。當沒有可用資料時,產生乙個stopinteration異常。此時,迭代器物件被耗盡,之後再呼叫 __next__()方法只會再次產生stopinteration異常。需要訪問的物件要求包含乙個__iter__()方法,用於返回迭代器物件,如果物件就實現了迭代器方法,就可以返回物件本身。

我們可以通過呼叫iter()方法來返回物件的迭代器:

>>> i = iter("hello")

>>> i.__next__()

'h'>>> next(i)

'e'>>> next(i)

'l'>>> next(i)

'l'>>> next(i)

'o'>>> next(i)

traceback (most recent call last):

file "", line 1, in

stopiteration對於python中常見的一些資料型別,如元組、列表、字典等都已經自己實現了迭代器功能,這使得它們能在for迴圈中正常工作:

>>> for i in (2,3,1):

... print(i)

... 23

1如果我們要求自定義訪問物件中的資料,那該如何做呢,我們需要實現__iter()__和__next()__方法,下面我們給出自己的物件,實現乙個簡易的計時器功能:

class countdown:

def __init__(self, start):

self.count = start

def __iter__(self):

return self

def __next__(self):

if self.count <= 0:

raise stopiteration

r = self.count

self.count -= 1

return r

if __name__ == "__main__":

for time in countdown(3):

print(time)

輸出:3 2 1

每天學點Python之tuple

元組就是乙個增加了限制的列表,主要的區別就是元組一旦確定就不能再修改。它們可以通過各自的建構函式相互轉化。元組與列表非常相似,但它有自己的優勢 元組比列表速度快,同樣遍歷一串數值,元組的速度比類表快 建立安全的變數,有些變數不想在建立後被修改 元組是可以當作字典的鍵和集合的值的,列表由於是變化的,雜...

每天學點Python之dict

字典用來儲存鍵值對,在python中同乙個字典中的鍵和值都可以有不同的型別。建立乙個空的字典有兩種方法 d d dict 而建立乙個包含元素的字典方法比較多,下面操作結果相同 a dict one 1,two 2,three 3 b c dict zip one two three 1,2,3 d ...

每天學點Linux

1.程序檢視刪除 ps 檢視當前正在執行的程序資訊,aux顯示所有狀態。可以確定哪些程序正在執行 執行狀態 程序是否結束 程序有沒有僵死 程序占用資源情況。eg ps aux grep tomcat kill終止程序,9強迫程序立刻終止 eg kill 9 pid killall 9 程序名 2.統...