今日は、
PHPには無い「lambda」を使ってみた。
これはおもしろい。
lambda 引数のリスト : 引数を使った式
がlambdaの書式。
※サンプルのコードは「みんなのPython」から抜粋
実際に試すにあたって、
lambdaを使わない場合が下記
>>> def cmp_len(a, b):
… return cmp(len(a), len(b))
…
>>> l = [“123”, “12345”, “12”]
>>> l.sort(cmp_len)
>>> l
[’12’, ‘123’, ‘12345’]
ちゃんとソートされている。
次にlambdaを使ってみる。
>>> l = [“123”, “12345”, “12”]
>>> l.sort(lambda a, b : cmp(a, b))
>>> l
[’12’, ‘123’, ‘12345’]
すげぇ〜1行で書ける。
みんなのPythonには下記の事が書かれていた。
便利だが可読性が悪い
ふむふむ。
ソートのように関数名を添える処理で利用し、
プログラムを簡潔に表記する目的で使われる。
なるほどね。
でもこれ使えたらかなり便利だと思うなぁ〜。
ちなみに今回使った関数で「cmp」というのがある。
これは、
第1引数と第2引数を比較する関数。
第1引数が小さい場合は、「-1」を返す。
両方の引数が等しい場合は「0」を返す。
第1引数の方が大きい場合は、「1」を返す。
ってかあらゆるオブジェクトが比較出来るみたい。
これもいいなぁ〜。
これは初めてのPythonに記述されていたっす。
やってみた。
>>> x = “dog”
>>> y = “lion”
>>> z = “cat”
>>> cmp(x, y)
-1
>>> cmp(y, x)
1
>>> cmp(x, z)
1
>>> cmp(len(x), len(z))
0
こんな感じ。
なるほど。
みんなのPython ソフトバンククリエイティブ(2006-08-22)
ソフトバンククリエイティブ |