作者: Fe2+ | |
日時: 2005/11/22(22:04) |
Fe2+ です。 何か混乱されているようですが、in 演算子は3通りに定義できて、 1) シーケンスに対しては __getitem__ に 0,1,2,... を渡し等しいものが得 られたら True、シーケンスが尽きたら False 2) イテレータに対しては next で要素を順に取り出し等しいものが得られた ら True、イテレータが尽きたら False 3) その他は __contains__ に引き渡して True/False を教えてもらう となっているはずです。 辞書では3番目のアプローチで、実質的に has_key 呼び出しと同じことになる (C での実装の詳細は知りませんが __contains__ のスロットと has_key が同 じ関数を指している…のかな)というのが速い理由だと思います。 -- MATSUI Fe2+ Tetsushi http://homepage3.nifty.com/text/ (http://lowlife.jp/mft/ for blog)