Masayan tech blog.

  1. ブログ記事一覧>
  2. Pythonのfor文をlambda式で置き換える

Pythonのfor文をlambda式で置き換える

公開日

環境

  • Windows 10
  • Python 3.10.1

lambdaとは?

  • 無名関数と呼ばれる関数を書くための記法
  • for文での繰り返しの処理等をワンライナーで簡潔に記述できる
  • Pythonのコーディング規約であるPEP8ではdefを用いた関数の定義が推奨とされている。(lambdaでの定義は非推奨)
  • 基本形(xとyが引数で、引数を足した結果を返す)
    lambda x, y: x + y 

実装

  • 例として、配列の各要素を2倍にするプログラミングを挙げます

呼び出し側

  • 引数でxを受け取り、xを2倍にして返す関数をlambdaで定義し、multiplicationに代入
  • 自作のmap関数の引数にmultiplicationと配列を渡す
import pytest
from shared.Util.XList import XList

@pytest.fixture
def setuped_list():
    number_list = [1, 2, 3, 10]
    return number_list

def test_配列の各要素をmapで2倍にできる(setuped_list):
    multiplication = lambda x: x * 2
    actual = XList.map(multiplication, setuped_list)

    expected = [2, 4, 6, 20]
    assert actual == expected

配列関連のutilityクラス

  • mapは、関数(callable)と配列(iterable)を受け取り、配列の各要素にcallableの処理を実行した結果の配列を返す

shared\Util\XList.py

class XList:
    @staticmethod
    def map(callable, iterable):
        return list(
            map(
                lambda item: callable(item),
                iterable,
            )
        )

以上です。複数行にわたる処理はlambdaでは書きづらいですが、短い処理であれば、for文よりも可読性も上がるので積極的に使用していきたいところです

まとめ

いかがでしたでしょうか。本記事では、Pythonのfor文をlambda式で置き換える方法について紹介しています。ぜひ参考にしてみてください