2017-06-28 31 views
0

我們有一個包含函數的列表,我需要在for循環迭代中調用它們。從python中調用函數一個一個地列出並且爲一個函數運行多次

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 

另一個是我需要使用函數的參數在不同的列表,並使用拉鍊在for循環或怎麼做我傳遞參數

請幫

+0

列表中的第一項是字符串對象而不是函數調用。另外,你已經調用了你創建的列表中的函數,你只能用函數的返回來創建一個列表。 – tmwilson26

+0

刪除列表中第一個元素的引號1 –

+0

因此刪除引號會有幫助嗎?我在列表本身中定義了參數,所以它會在循環迭代中執行,或者當我們調用列表時,只有它會開始執行。我只想在for循環中調用函數 – Bittu

回答

2

你的第一個項目是一個字符串,如我t在錯誤中說。你的函數需要實際指定功能:

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

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

您目前未上市的功能本身,而是通過調用它們返回的輸出。

我不確定你的用例,所以這可能不是最好的方式來實現你真正想要的,但這個稍微凌亂的解決方案應該工作。

+0

因此刪除引號會有幫助嗎?我在列表本身定義了參數,所以它會在循環迭代中執行,或者當我們調用列表的時候,只有它會開始執行 – Bittu

+0

您沒有在列表本身中定義參數 - 您使用指定的參數調用函數實例化列表。您需要分別存儲參數,並將它們傳入以代替'args'。不過,我懷疑你的問題是[XY問題](http://mywiki.wooledge.org/XyProblem)的一個例子。 –

+0

我需要使用zip一個列表函數名稱和其他參數列表? – Bittu

相關問題