2010-01-01から1年間の記事一覧

pythonで__line__を使う

データの定義位置を取得したいみたいなことを清水川さんのページで見た。pythonにはC言語のマクロみたいに__line__がないので、frameオブジェクトからファイル行数取ってとかを関数でやるのが一般的みたい。また、atsuoishimotoの日記の記事では、簡易DSLみ…

ディスクリプタとプロパティ

昨日のエキPy読書会でをお勉強しました。ディスクリプタとはオブジェクトの属性が参照されたときの動作をカスタマイズするためのものです。特に__get__と__set__を両方持つものをデータディスクリプタというらしいです。このディスクリプタはクラスの属性と…

pythonでrun-length decode

Prologの練習問題サイトにrun-length encodingがあったのでやってみます。 PrologSite問題はこれ。 1.12 (**) Decode a run-length encoded list. Given a run-length code list generated as specified in problem 1.11. Construct its uncompressed versio…

リスト内包表記とジェネレータの比較

エキPy読書会でジェネレータお勧め!どんどん使うべし的な話がありました。 ジェネレータの使いどころとしては、膨大なデータを扱うときや実行に時間がかかるときということでした。 リスト内包と比べるとメモリの使用量が少なくて済むことや、複雑な処理も…

pythonでrun-length encoding

Prologの練習問題サイトにrun-length encodingがあったのでやってみます。 PrologSite問題はこれ。 1.10 (*) Run-length encoding of a list. Use the result of problem 1.09 to implement the so-called run-length encoding data compression method. Con…

初トラックバックだ。

ブログ読んでたら0と1を次々と返したいなんていうのがあったのでやってみた。 Algorithm - 0と1を次々と返す簡単なお仕事 class Cycle(object): def __init__(self, vals=[0,1]): import itertools self.it = itertools.cycle(vals) def __call__(self): ret…

pythonでuniq

今日はpythonでuniqを実装してみましたよ。 def iuniq(it): if hasattr(it, '__iter__'): readed = set() for i in it: if i in readed: continue else: readed.add(i) yield i else: raise TypeError('argument has not __iter__.') 書いてから思ったけど、…

pythonでflatten

rubyには配列を平滑化するflattenなんていうメソッドがありますが、 意外にもpythonにはありませんでした。(当然あるものと思ってましたが^^;) ググってみるとやっぱいろんな人がサンプルコード書いてますね。 そこで、自分でもflattenかいてみました。…

オレオレIPアドレス範囲表記のパース

ツールとかを作っているとIPアドレスの範囲を指定して書きたいことがたまにあります。 例えば192.168.1.10 - 192.168.1.20の範囲の生きているPCをpingで調べたいときなど。 このIP範囲を表すとき、192.168.1.[10-20]なんて指定したいわけです。 こんな表記の…