再類中,定義了__iter__(self)方法就成為了可迭代物件,再在定義乙個__next__(self)方法最終成為迭代器
迭代器是在你要用的時候再給你造乙個值,相當於買手抓餅,你說要買的時候人家才給你現場做,節約了記憶體。
classa:
def__init__
(self, num)
: self.num = num
self.x =
0 self.y =
1def
__iter__
(self)
:# 必須:定義了__iter__()後成可迭代物件
return self # 返回乙個可迭代物件(因為定義了__iter__()所以本身就是可迭代物件)
def__next__
(self)
:# 再定義__next__()方法後成為迭代器
if self.x > self.num:
raise stopiteration
self.x, self.y = self.y, self.x + self.y
return self.x
a = a(10)
# 例項成為乙個可迭代物件
for i in a:
# 使用for...i會呼叫__next__()方法,返回值i為__next__()的返回值
print
(i)# 第二種使用方法
s =list
(a(10))
print
(s)
開發自定義python 迭代器
class test object def init self,data iter,stop self.data iter data iter self.stop stop self.start 0 def iter self return self def next self self.start...
C 自定義迭代器
讓我們在示例中看乙個簡單迭代器型別的定義。我們定義乙個類模板,用來表示一段數值型別值,也可以生成指定範圍的開始和結束迭代器。這個迭代器也是模板型別,兩個模板都定義在同乙個標頭檔案 numeric range.h 中。下面是 numeric range模板的定義 template class nume...
c 自定義迭代器練習
include include include include includeusing namespace std 第乙個型別引數可選的值為如下幾種 struct input iterator tag 唯讀 struct mutable iterator tag 只寫 struct output ...