【Python】関数をリストに代入する方法

【Python】関数をリストに代入する方法

関数をリストに代入する基本

Pythonでは関数はオブジェクトとして扱われるため、変数に代入したり、リストに格納したりすることが可能です。


def greet():
    return "こんにちは"

def farewell():
    return "さようなら"

functions = [greet, farewell]

# 各関数を実行
for func in functions:
    print(func())  # こんにちは, さようなら

リスト内の関数を実行する

関数をリストに格納した後、それを実行するには、`()`を付けて関数を呼び出します。


functions = [greet, farewell]

# インデックスで関数を取得し、実行
print(functions[0]())  # こんにちは
print(functions[1]())  # さようなら

引数を持つ関数をリストに格納する

引数を取る関数も同様にリストに格納できます。


def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

operations = [add, subtract]

# 引数を渡して関数を実行
print(operations[0](10, 5))  # 15
print(operations[1](10, 5))  # 5

lambda関数をリストに代入する

無名関数(lambda)をリストに格納することも可能です。


operations = [
    lambda x, y: x + y,
    lambda x, y: x - y,
    lambda x, y: x * y,
    lambda x, y: x / y if y != 0 else None
]

print(operations[0](10, 5))  # 15
print(operations[1](10, 5))  # 5
print(operations[2](10, 5))  # 50
print(operations[3](10, 5))  # 2.0

リスト内包表記で関数リストを作成する

リスト内包表記を使って、条件に応じた関数のリストを作成できます。


operations = [(lambda x: x * i) for i in range(1, 6)]

print(operations0  (10 * 1)
print(operations )  #  * 2)
print(operations )  # 50  (1

mapを用いた関数リストの適用

リストに格納された関数を`map`で適用することも可能です。


def double(x):
    return x * 2

def triple(x):
    return x * 3

functions = [double, triple]

values = [1, 2, 3, 4, 5]

# 各関数を全ての値に適用
for func in functions:
    print(list(map(func, values)))

# 出力:
# [2, 4, 6, 8, 10]
# [3, 6, 9, 12, 15]

functools.partialを使った関数リスト

`functools.partial`を使うことで、引数の一部を事前に固定した関数をリストに格納できます。


from functools import partial

def power(base, exponent):
    return base ** exponent

# べき乗を事前に固定
square = partial(power, exponent=2)
cube = partial(power, exponent=3)

powers = [square, cube]

print(powers )  # 25  (5^2)
prwers )  # 125 (5^3)


このように、Pythonでは関数をリストに格納し、柔軟に利用できます。 リスト内の関数を動的に選択して適用したり、`lambda`や`partial`を使って関数のバリエーションを作ったりすることで、より汎用的なコードを書くことが可能になります。

コメントを残す

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