【Pythonチュートリアル】lambda式を使ったsort

monitor Python

lambda式を使ったlistのsort。
公式的に覚えるのもアリですが、動作について解説します。

公式的に覚える

Pythonチュートリアルのサンプルコードを見てみます。

“数字”と”英語”のペアをタプルとするリストを、”数字”もしくは”英語”でソートします。
ソートの結果がわかりやすいように、順不同でpairsを作ります。

>>> pairs = [(3, 'three'), (2, 'two'), (4, 'four'), (1, 'one')]

# 数字でソート
>>> pairs.sort(key=lambda pair: pair[0])
>>> print(pairs)

[(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]

# 英語でソート
>>> pairs.sort(key=lambda pair: pair[1])
>>> print(pairs)

[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

公式的に覚えるのであれば、、、

タプルのindex:0の要素(数字)でソートしたい場合は、pair[0]

タプルのindex:1の要素(英語)でソートしたい場合は、pair[1]

pairは仮引数のなので、xと書いても、yと書いてもOKです。

ちゃんと動作を理解してみる

先ほどのソートを一般化して書いてみると、以下の通りになります。

list.sort(key=lambda 仮引数: 式)

中身の動作を一つずつ見ていきます。

  • list
    • 入れ子(ネスト)のリストなどの複合オブジェクト
  • .sort(key=関数)
    • sortはlistのメソッドなので、list.sort()と表記する
    • keyはsortのオプション。keyは1つの引数を持つ関数を指定します。前述のlistから要素を取り出して、それを指定した関数の引数とします。
  • lambda 仮引数: 式
    • keyで取り出した要素を引数として、式を元にソートしたいキーワードを取り出します。

keyがどういった意味合いを持つのかを理解するのが、まさに鍵です。

参考

タイトルとURLをコピーしました