【Python】関数をリストに代入する方法
- 関数をリストに代入する基本
- リスト内の関数を実行する
- 引数を持つ関数をリストに格納する
- lambda関数をリストに代入する
- リスト内包表記で関数リストを作成する
- mapを用いた関数リストの適用
- functools.partialを使った関数リスト
関数をリストに代入する基本
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`を使って関数のバリエーションを作ったりすることで、より汎用的なコードを書くことが可能になります。