Pythonを勉強中 vol.2

今日は、

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)

  • (著)柴田 淳

ソフトバンククリエイティブ
新品価格:¥ 2,940
中古価格:¥ 1,800
ASIN:479733665X

投稿者:

kishir

趣味: sk8, ピスト、ターンテーブル、レコード 仕事: Python, Objective-C, PHP, JavaScript

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です