func = lambda x:x**2 func(5) #25 func(6) #36
例1)sorted()
lambda関数の内容に入る前に補足
sort()とsorted()について
>>> x = [1,6,3,8,4] >>> y = [1,6,3,8,4] >>> y.sort() >>> y [1, 3, 4, 6, 8] >>> sorted(x) [1, 3, 4, 6, 8]
つまり、sort()はy自体の順番を変更しているけれど、sorted()はxの順番を変更して出力している。
ここで、sorted()を使うとリストの中がタプルの場合、ソートしたい要素を指定できる。
例えば、
L1 = [(7,2),(3,4),(5,5),(10,3)] L2 = sorted(L1,key=lambda x:x[1]) print L2 #[(7,2),(10,3),(3,4),(5,5)]
ここで、L1というリスト型オブジェクトをタプルの2番目の要素でソートすることができている。
これは、リスト型でなくてもイテレータならば同じで、辞書型についても考えてみる。
※イテレータ:ざっくり言うと、リストやタプル、辞書のように次の要素が決まっていて次のデータを参照できる。こんな感じ?
例えば
dict = {'A':500, 'B':200, 'C':300, 'D':100, 'E':400}
for k, v in sorted(dict.items(), key=lambda x:x[1]):
print(k, v)
結果
D 100 B 200 C 300 E 400 A 500
また、ソートを降順にするにはreverse=Trueを付ければいい
for k, v in sorted(dict.items(), key=lambda x:x[1], reverse=True): print(k, v)
結果
A 500 E 400 C 300 B 200 D 100