Re: [問題] iterate

看板Python作者 (金が信念! XD)時間18年前 (2007/06/01 21:22), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《huggie (huggie)》之銘言: : 我要我自己做的 class 可以 loop for loop : for X in Y: : print X : 請問那個 Y 要怎麼做? : 我可以設定一個 Y.foo() : 讓 foo() 變成 generator : 但如果要直接 loop Y 要如何做呢? 如果你已經有寫好的 generator 就稱它為 Y.foo 好了, 那你可以這樣寫: class Y: def foo(self): ... def __iter__(self): return self.foo() 或者是如果你不想用 generator, 那也可以寫自己的 iterator, example: class fib: def __init__(self, max = None): self.max = max def __iter__(self): return self.iterator(self) class iterator: def __init__(self, owner): self.a, self.b = 1, 1 self.owner = owner def next(self): result, self.a, self.b = self.a, self.b, self.a + self.b if not self.owner is None and result > self.owner.max: raise StopIteration return result >>> j = fib(200) >>> for k in j: print k 1 1 2 3 5 8 13 21 34 55 89 144 >>> -- その乾いた哀愁の瞳に去來するものは何か? 失ったもの 得たもの そして廣大なネットの狹間で彼が見たものとは? 虛像と實存と記號の中に彼は今、何を想うのか? <バトルプログラマーシラセ> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.224.64

06/03 02:05, , 1F
哦..多謝
06/03 02:05, 1F
文章代碼(AID): #16O1sog4 (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
18年前, 06/01
完整討論串 (本文為第 2 之 2 篇):
18年前, 06/01
1
1
文章代碼(AID): #16O1sog4 (Python)