[pukiwiki]
*今年最後のWBS土曜版
塩田さんがフワフワのモコモコ&ブーツ~
2週間のお別れです~~ぐすん。
*[[10年経って心臓が再び動き出した少女!(イギリス):http://boxheadroom.com/2006/04/14/girl_heart]]
たまたまテレビを付けたら、ドラマでピギーバック移植のシーンが有りました。
*[[Python からCOMコンポーネントを使って、Microsoft Excelのファイルを読み込む:http://shisashi.blogspot.com/2007/12/python-commicrosoft-excel.html]]
*[[Python Win32 Automation – 傀儡師の館 :http://b.hatena.ne.jp/entry/4733987]]
いま、楽天がメンテ中なので、あとで読む
*[[子供でもできる Python:http://b.hatena.ne.jp/entry/6208576]]
*[[UniDic ってなんだ (Python で人工無能):http://b.hatena.ne.jp/entry/6873552]]
*[[BeautifulSoupで株価をゴリゴリ:http://shisashi.blogspot.com/2007/12/python-commicrosoft-excel.html]]
*ジェネレータ+デフォルト引数=イテレータ?
[/pukiwiki]
寝ぼけてたら、偶然、こんな感じのコードを書いてしまったのでメモ。
class Test : def __init__(self): self.g=(x for x in xrange(1,10)) def next(self): for i in self.g: return i test=Test() t=1 while t: t=test.next() print raw_input(t)
太字が偶然な部分。forループからreturnするたび、数字がカウントアップするという。。。
これって、多分、間違った書きかたかと思われ。。。いや、希望通りに動いてるけどorz
ちゃんとしたイテレータの書き方のチュートリアル探さなくちゃ。。。
もう少しシンプルに書き直してみた
from glob import iglob #globのジェネレータ版 def next(g=iglob("*.jpg")): for x in g : return x #raise Exception while 1 : print raw_input(next())
-next()を呼ぶたびにカレントディレクトリのjpegファイル名を一個返します。
-終端に来るとNoneを返す
-例外を発生させてもOK
最初、変態~と思ったけど、慣れたら気持ちよくなってきた(汗
イベントドリブンなプログラムで便利です。
いや、ホントは、ちゃんとしたイテレータ書けばいいんですけど(汗
[pukiwiki]
*こんなの書かなくても
<<追記>> 2008-01-01
ジェネレータ.next()でいけた。
_>>> g=(x for x in [1,2,3])
_>>> g.next() ;g.next() ;g.next();g.next()
_1
_2
_3
_Traceback (most recent call last):
_ File “
_ g.next() ;g.next() ;g.next();g.next()
_StopIteration
この記事書いたときにも同様なコードを試したけど、うまくいかないような気がしたのだけれど、それは勘違いだったみたいです。
[/pukiwiki]