python

pythonのheapqが強力すぎる

お題は、10x10の二次元迷路の経路探索なんですけど、これにheapqを使ったらやたら早かった、というお話です。 使うアルゴリズムは、スタート地点(1, 1)から移動可能な経路のリストをバッファに積んでいって、最初にゴール(10,10)に到着した経路を出力するだ…

pythonのリスト操作が強力すぎる

まず、下のソースを見てください。 def checkio(data): if len(data) == 1: return data[0][0] else: r = range(len(data)) exp = [data[i][0] * checkio([data[x][1:] for x in r if x != i]) for i in r] return sum(exp[::2]) - sum(exp[1::2]) これ、che…

ピタゴラス数

プログラミングHaskellの第5章演習問題より。印象的だったので…問題 大きさnまでの正の整数を要素とするピタゴラス数を列挙する関数phを書こうすこし親切な問題の説明 1.まず、大きさnまでの正の整数3個の組み合わせを生成してみよう 2.その組み合わせのうち…

map()

map()って何なのかよくわからなかったのですが、いろいろ勉強した所、なんとなく判った気になったのでメモ。 lst = ['hoge', 'fuga', 'piyo'] def foo(spam): print spam # lst にある文字列を、順番に画面に出力する(1)I for x in lst: foo(x) # (2)(1)と同…

pythonで継承を使ってみる

前回の続きです。Partition.mount()がゴチャゴチャなのは、nilfs2用のコードと、普通のファイルシステム用のコードが一緒になってるからなので、これを分割することにしました。それで、Partitionクラスを継承するNilfs2Partitionクラスを作ることにしたので…

オプション解析器 optparseを使ってみた

前回の続きでーす。今回は、オプション解析器、 optparseを使ってみました。使いかたは簡単です。まずは、OptionParserのインスタンスを作成します from optparse import OptionParser op = OptionParser() 次に、解析するオプションを追加します。 op.add_o…

バックアップをとろう(その6)

前回の続きです。Partitionクラスのmount, umountを実装します。 class Partition(): def mount(self): """ マウントする """ # devnodeが解らなければ、マウントしようがない if not self._attr['devnode']: # fixme 例外を送出した方が良いかも return # …

コンテキストマネージャーを使う

前回の続きです。コンテキストマネージャーを使うと、さらに記述がすっきりするようなので、早速試してみました。まずは、Partitionクラスをコンテキストマネージャーにします。クラスをコンテキストマネージャーにするには、特殊関数__enter__と__exit__を…

バックアップをとろう(その5)

前回の続きです。まずは、do_backup()の実装から。 def do_backup(partition, dest_mtpt): """ 関数 doBckup: rsyncを利用してバックアップコピーをとります パラメータ partition コピー元となるパーティションの名前(文字列) ex 'boot' dest_mtpt コピー…

pythonとperlを両方ちょこっと使ってみて思ったこと

まったくのシロウトがちょこっとモジュールとか書いてみて思った感想ですよ。一言で言うと、とりあえず動くプログラムを短期間で書きたければ、pythonが無難だということです。 perl 良い点 ワンライナーで使うと強力。同人CDを音源からエンコしたファイルが…

バックアップをとろう(その4)

http://d.hatena.ne.jp/dwarfjay/20110610/1307704454の改造ネタ続きです。外部コマンドを呼ぶ時に、あらかじめ引数リストを定義しておいて、 predefined_command=['ls','-l'] call(predefined_command) としていたのですが、main関数を分割することしたので…