2010-04-04から1日間の記事一覧

itertools を使ってみる修行、その 1 -- groupby

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 が not callable だと怒られる現象に悩む

静的メソッドを定義し、そのメソッドをそのクラスの中で使用しようとしたら staticmethod が callable でないと怒られた。 >>> class Karhu(object): ... @staticmethod ... def test(): ... return "test" ... x = test() # ... (1) ... Traceback (most re…

イテレータを反転したイテレータを得る修行

イテレータを渡すと、それを反転したイテレータが返るような関数がないものか、と思ったけど、なさげ。reversed() はシーケンスを引数に取ってそれを反転したイテレータを返す。イテレータから一旦シーケンスを経由すれば大丈夫、ということになる。つまり、…

2 引数の iter() を使ってみる修行

イテレータを作る関数 iter() はシーケンスやイテレータを引数に渡すことになっている。だけどもうひとつ、実行可能なオブジェクトと番兵を渡す 2 引数のバージョンもあるようだ。ということで、使ってみた。 import random class Kissa(object): def __call…