«前の日(09-13) 最新 次の日(09-15)» 追記

ema log


2007年09月14日 この日を編集

_ [最近] アンカテ(Uncategorizable Blog) - 安倍辞任関連記事を幅優先探索

アンカテ(Uncategorizable Blog) - 安倍辞任関連記事を幅優先探索」がで紹介されているエントリはたしかに面白かった.

詳しいことも難しいこともわからないけど,安倍さんを選んだのは有権者だし,見捨てたのも有権者.気持ち悪いことこの上ない.残念です.お疲れ様でした.

あんな状態の人間をただ「感情的に」叩こうというマスコミの行動だけは理解できない.一体,誰がそれを望んでいるというのか?

とりあえず脊髄反射とスケープゴートをたてときゃいいだろって以外の落としどころをここのところみてない気がする.このまま,なぁなぁで福田総理が誕生して,それで安泰なら良いのですが,そうも行かないんだろうな.

僕は,どんな問題があるのか,また無いのかすらわからずに,ただ思ったことをチラシの裏に書くだけ.


2013年09月14日 この日を編集

_ [Programming] Python のジェネレータによる外部イテレータ

ツリーをトラバースする必要があったんだけど、visitor が無く while 文で順番にたぐるコードを書いた

node = GetRoot()
while node:
    # ガード節
    if condition_is_not_valid:
        # スキップ
        node = GetNextNode(node)
        continue

    # 処理
    proc
    # 次へ
    node = GetNextNode(node)

ただ、これだとガード節を書きたいときに、continue の前に次を取得するコードをコピペしないと駄目で、かといってネストを深くしたくないし、goto 文も無いのでどうしようかなぁと思ったけど、よくよく考えれば外部イテレータに思いあたり。

class ObjectIterator:
    def __iter__(self):
        node = GetRoot()
        while node:
            yield node
            node = GetNextNode(node)

こんな感じのイテレータを用意して、for 文で回せば良かった。すっきり。

for obj in ObjectIterator():
    # ガード節
    if condition_is_not_valid: continue
    # 処理
    proc

なるほど。Ruby だと Enumerable なモンキーパッチで内部イテレータにしたくなるけど、Python だと外部イテレータを書けば良いということか。