Python
Wiki を html に落としたい。バックアップ目的だったり、Wiki をオーサリングツールとして使ったり、とそんな要求もあるだろう。とにかく、そんなことがしたかったので、Python で書いてみた。 Wiki エンジンは PukiWiki 1.4.7 サイトには BASIC 認証をかけ…
シーケンスを渡してクォンタイルを計算する。 # ankka.py import math class Quantile: def __init__(self, seq): self.seq = list(seq) self.seq.sort() self.last_idx = len(seq) - 1 def q(self, v): idx = v * self.last_idx idx_l = math.floor(idx) id…
基底クラスに定義されたメソッドを派生クラスから呼びたい。たとえば基底クラスのメソッドをオーバーライドするとき、基底クラスのメソッドを呼んで元々の処理をした上で、独自の処理を追加したい。組込みの super 関数があるので調査してみた。 # kissa.py …
kissa パッケージを開発しているとしよう。Python を対話的に使っていて、import kissa すると、kissa/__init__.py の中で必要なモジュールを from . import lintu のように import している。パッケージはまだまだ開発中でいろいろいじっているので、対話的…
大きな array、たとえば 100 万個の要素の array を 0 で初期化したい。まずは、普通に 0 が 100 万個入ったリストを作ってしまって、それで初期化する方法 (list)。次に、0 を 100 万回生成するジェネレータで初期化する方法 (iter)。最後に 100 万回ループ…
与えられた小数に近い整数比を生成するジェネレータ - 昨日知ったこと を考えたりしたけれど、fractions — Rational numbers — Python 3.7.3 documentation なんてのがあってこんなのが書かれている。 >>> from fractions import Fraction >>> Fraction('3.1…
メインマシン CentOS 5.4 の yum でインストールされる Python は 2.4 系である。Redhat 系の管理ツールとか Xen の管理ツールとか Python で書かれているものがあるから、おいそれとアップグレードするわけにもいかない。 とりあえず /opt/python3.1.2/ 以…
ある集合 S の部分集合 Q の中で、要素数が一定以下のもの (|Q| Python らしい書き方があるに違いない。まずは順列生成ジェネレータとかあるだろうな、と検索したら、次の記事を見つけた。 pythonでクロージャを渡して順列生成 - yattのブログ いやー。すご…
メモ。 >>> def ps(): os.system("ps -p %d u" % os.getpid()) ... >>> import os >>> ps() USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND takeyuki 30831 0.0 0.0 7188 2604 pts/7 S+ 14:05 0:00 python >>> import numpy >>> ps() USER PID %CP…
ある浮動小数点数が与えられたときに、それを簡単な整数比で表せないか、できるだけ簡単な整数比で洗わしたいのだが ... 。という問題を解決するためのジェネレータを作ってみた。小数部分だけ整数比で表せれば整数部は簡単に求まるので、0 以上 1 未満の小…
itertools.groupby を使ってみる。0 から 9 の整数を 3 で割った余りでグルーピングしてみる。 >>> [(x[0], [y[0] for y in x[1]]) for x in itertools.groupby(sorted([(x,x%3) for x in range(10)], key=lambda x:x[1]), lambda x:x[1])] [(0, [0, 3, 6, 9…
WEB で property 周りの記事を調べていたら、次のようなコードで、x や y をインスタンス変数だと解説している例を見つけた。 class C(object): x = 10 y = 20 確かに、 >>> c = C() >>> c.x # ... (1) 10 >>> c.x = 30 # ... (2) >>> c.x # ... (3) 30 とな…
静的メソッドを定義し、そのメソッドをそのクラスの中で使用しようとしたら staticmethod が callable でないと怒られた。 >>> class Karhu(object): ... @staticmethod ... def test(): ... return "test" ... x = test() # ... (1) ... Traceback (most re…
イテレータを渡すと、それを反転したイテレータが返るような関数がないものか、と思ったけど、なさげ。reversed() はシーケンスを引数に取ってそれを反転したイテレータを返す。イテレータから一旦シーケンスを経由すれば大丈夫、ということになる。つまり、…
イテレータを作る関数 iter() はシーケンスやイテレータを引数に渡すことになっている。だけどもうひとつ、実行可能なオブジェクトと番兵を渡す 2 引数のバージョンもあるようだ。ということで、使ってみた。 import random class Kissa(object): def __call…
あるリストの中で特定の条件にあう要素のインデックスを知りたい。しかも、リストの末尾から調べて最初に見つかるものの。たとえば >>> a = range(5,94,13) >>> a [5, 18, 31, 44, 57, 70, 83] として、3 の倍数になっている要素は 1 番目 (最初の要素が 0 …