我們經常需要遍歷乙個物件中的元素,在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.統...