2008-08-01から1ヶ月間の記事一覧

インタプリタ

『初めてのRuby』トークイベントの動画を見ていたら、Yuguiさんという人が、「Perl初心者の頃、後の方にある処理にエラーがあると前の方にある処理が実行されないところでつまづいた」というような発言をしていた。『初めてのRuby』では、そういうところを解…

unhashableなオブジェクトを辞書のキーにする

以下hashableな辞書クラス。 >>> class dict2(dict): ... def __hash__(self): ... return sum(sum(ord(x) for x in xx) for xx in self) ... >>> D = {} >>> D[dict2({'a':[], 'b':None})] = 1 >>> D[dict2({'a':[], 'b':None})] 1 以下hashableなリストク…

レキシカルスコープとダイナミックスコープ

Pythonはレキシカルスコープ(静的スコープ)である。Pythonは動的スコープの機能はない。 >>> x = 99 >>> def fooA(): ... print x ... >>> def fooB(): ... x = 1 ... fooA() ... >>> def fooC(): ... x = 2 ... fooA() ... >>> fooB() 99 >>> fooC() 99 foo…

文字コード

HDEラボ: PythonのUnicodeEncodeErrorを知る (http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html) PythonMatrixJp: 日本語文字列コード問題まとめ (http://python.matrix.jp/tips/string/encoding.html) Effective Python: 文字コード (http://mo…

メモ

変数はファーストクラスオブジェクトではないので、変数から変数名を取得できない。 変数から変数名を直接取得する簡単な方法がないので、取得したい場合は、リストや辞書などで関連付けしておく必要がある。 変数に関数オブジェクトを代入する場合は、関数…

辞書のキーと値を入れ替える(2)

例えば、辞書Dに対して以下のようにキーと値を入れ替えられる。dict(zip(D.values(), D)) 但し、これには以下の2つのことに注意する必要がある。 unhashableな値はキーになれない 重複した値は違うキーになれない この2つの事柄はdictに関する基本である。こ…

辞書のキーと値を入れ替える

牌語備忘録: 続・辞書のキーと値を入れ替えをPythonでやってみたの速度を計測してみた (http://d.hatena.ne.jp/CortYuming/20080811/p2) import timeit from timeit import Timer from operator import attrgetter a1 = """ def d_change_a(d): di = {} for …

ロベール本

C++を使う必要があり基礎から勉強しなおしたいと思って、『ロベールのC++入門講座』という本を買った。かなり内容がまとまっており、久しぶりのヒットだった。C++のこういう本を待ち望んでいた。C++は文法が細かいので、今まで網羅的にまとまった本がなかっ…

Google Chart API

ウェブブラウザにグラフを表示する方法を探していたらGoogle Chart APIというものを見つけた。以下のようなグラフが簡単に書ける。 Google Chart API デベロッパーガイド (http://code.google.com/intl/ja/apis/chart/http://code.google.com/intl/ja/apis/c…

OCaml本

『プログラミングの基礎 (Computer Science Library 3)』 http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-1160-1 OCamlでプログラミングの基礎を押さえる本らしい。結構面白そう。

MixinによるDuck Typing

d.y.d: イヌネコ (http://www.kmonos.net/wlog/88.html#_1337080801) リンク先の話題とは何も関係ないが、PythonでMixinを使用してDuck Typingを書いてみた。speakメソッド以外に共通のメソッドが増えれば、DRY原則から通常は継承することになるが、別に継承…