for語句呼叫iter()
,iter()
返回__next__()
方法。返回所有的之後,引發stopiteration
異常來終止。
於是可以自己寫乙個__iter__()
函式,返回self
, 寫乙個__next__()
方法,每次返回下乙個值,直到結束。
class student():
def __init__(self,name,age):
self.stu_list={}
self.add_stu(name,age)
self.index=len(self.stu_list)
def add_stu(self,name,age):
self.stu_list[name]=[name,age]
self.index=len(self.stu_list)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise stopiteration
self.index=self.index-1
return self.stu_list[list(self.stu_list.keys())[self.index]]
實現了乙個學生類,將學生名字作為key,value則是乙個list,list中包含姓名和年齡。
s=student('張華',19)
s.add_stu("李曉明",29)
s.add_stu("張茂",19)
此時s中是:
經過使用for語句:
for i in s:
print(i)
輸出內容:
['張茂', 19]
['李曉明', 29]
['張華', 19]
class student():
def __init__(self,name,age):
self.stu_list={}
self.add_stu(name,age)
self.index=len(self.stu_list)
def add_stu(self,name,age):
self.stu_list[name]=[name,age]
self.index=len(self.stu_list)
def itertool(self):
for i in self.stu_list:
yield self.stu_list[i]
同樣是剛剛的用例,只是把其中的迭代工具改為itertool
注意其中的寫法,yield
會記住上次到**了。
s=student('張華',19)
s.add_stu("李曉明",29)
s.add_stu("張茂",19)
輸入資料後,呼叫如下:
for i in s.itertool():
print(i)
結果是:
['張華', 19]
['李曉明', 29]
['張茂', 19]
python 迭代器 python迭代器
迭代器 可以直接作用for迴圈的資料型別 我們已經知道,可以直接作用for迴圈的資料型別有以下幾種 一類是集合資料型別 如 list tuple dict set str等 一類是generator,包括生成器和帶yield的generator function 可迭代物件定義 這些可以直接作用fo...
python的迭代器 Python 迭代器
迭代器 迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。可迭代物件 以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等...
python的迭代器 python 迭代器
在介紹迭代器之前,先說明下迭代的概念 迭代 通過for迴圈遍歷物件的每乙個元素的過程。python的for語法功能非常強大,可以遍歷任何可迭代的物件。在python中,list tuple string dict set bytes都是可以迭代的資料型別。可以通過collections模組的iter...