2017-06-28 16 views
0

関数を含むリストがあり、forループの繰り返しで呼び出す必要があります。Pythonの関数を1つずつ呼び出し、1つの関数に対して複数回実行する

list1 = ['f1(agr1,agr2)', 'f2(arg1)', 'f3(arg1,arg2,agr3)'] 

for i in list1: 
    i 

これは実行されていません。

私は以下のように使用:

for i in list1: 
    i() 

エラー下回っ行き方:

TypeError: 'str' object is not callable 

他の一つは、私は私がどのように異なるのリストに関数の引数を使用し、ループのためにジッパーを使用する必要があるかであります引数を渡します

助けてください

+0

リストの最初の項目は文字列オブジェクトであり、関数呼び出しではありません。さらに、作成したリスト内の関数を既に呼び出している場合は、関数の戻り値を含むリストのみを作成します。 – tmwilson26

+0

あなたのリストの最初の要素の引用符を削除します。 –

+0

引用符を削除すると正しいでしょうか?私はリスト自体で引数を定義したので、forループの繰り返しで実行するか、リストを呼び出すときにのみ実行を開始します。私はforループの中で関数を呼びたい – Bittu

答えて

2

最初の項目は文字列ですtはエラーで言う。あなたの関数が実際に機能を指定する必要があります。

list1 = [(f1, (arg1, arg2)), 
     (f2, (arg1,)), 
     (f3, (arg1, arg2, arg3))] 

for i in list1: 
    i[0](*i[1]) 

現在、あなたは自分自身の機能ではない列挙されているが、出力はそれらを呼び出すことによって返されました。

私はあなたのユースケースについてはわからないので、これはあなたが実際に望むものを達成するための最良の方法ではないかもしれませんが、このやや乱雑な解決策はうまくいくはずです。

+0

引用符を削除すると正しいでしょうか?私はリストそのものに引数を定義していますので、forループの繰り返しで実行するか、リストを呼び出すときに実行するだけで実行します。 – Bittu

+0

リスト自体に引数を定義しませんでした。リストをインスタンス化する。引数を別々に格納し、 'args'の代わりにそれらを渡す必要があります。私はあなたの質問は[XY問題](http://mywiki.wooledge.org/XyProblem)のケースだと思う。 –

+0

私はリスト関数名と引数の他のリストのためにzipを使う必要がありますか? – Bittu

関連する問題