やるだけPython競プロ日誌

競プロの解説をPythonでやっていきます。できるだけ初心者に分かりやすいように『やるだけ』とかは言わないようにします。コメントについては必ず読んでいます。どんなに細かいことでもいいのでコメントくださればうれしいです。

Pythonの無名関数=(lambda)について

lambda

分かりにくいですよね笑

私も理解するために少し時間がかかりました。

簡単に言うと

””
def せずに関数を定義する
””

ものです。

もし、あるイテレータ・構造の二番目を取り出す関数を作るには

def getsecond(n):
    return n[1]

とできますが、もっと短く

getsecond = lambda x: x[1]
getsecond([1, 2])
  # 2

とできます。

lambda の文法について

lambda の文法は
"""
lambda 引数: 返り値
"""

となっています。なので、

先ほどのlambdaでいうと

x を引数としたときに、x[1]を返り値にする。

ということです。

なので、keyを引数に取るようなsortで、絶対値を基準にソートしたいとき

a = [1, 3, 5, 7, -2, -4, -6]
print(sorted(a))
  # [-6, -4, -2, 1, 3, 5, 7]
print(sorted(a, key=lambda x: abs(x)))
  # [1, -2, 3, -4, 5, -6, 7]

とできます。

どうですか?分かりやすかったですか?
質問があれば気軽にどうぞ!

宣伝…