リストに格納した関数を、別のリストにおいてインデックスが同じ位置にある変数がTrueの時だけ実行したいです。
ただ、こうした考え方が、下記で例に挙げていることをしたい解として、正しいかもわかりかねております。
考え方を変える必要がある場合は、その点もご教示頂けますと大変助かります。
例:1という数値が含まれるリスト(numbers)が与えられた際に、数値を2倍する関数で得られた[1,2]というリストに対して、次に数値を3倍する関数を適用し、[1, 2, 3, 6]という結果を得たい。ただし、別のリスト(methods)の同じインデックス位置がtrueの時だけ実行したい。
■インプット
[1]
■得たい結果
・bai2, bai3がいずれもTrueの場合 →[1, 2, 3, 6]
・bai2=False, bai3=Trueの場合 →[1, 3]
・bai2=True, bai3=Falseの場合 →[1, 2]
import numpy as np num = int(1) # 得たいリストを計算する関数の定義 def scratch_num(num, bai2=False, bai3=True): # booleanのリスト methods = [bai2, bai3] # 関数用リスト function = np.array([ lambda x: x * 2, lambda x: x * 3 ]) # 結果リスト numbers = [num] # 結果リストに対して、関数リストを適用 for f in function: tmp = [] # f の適用結果を記録する一時的な配列 for x in numbers: y = f(x) tmp.append(y) numbers.extend(tmp) return numbers # 関数の実行 numbers = scratch_num(num) # 結果の出力 print(numbers)
回答2件
あなたの回答
tips
プレビュー