2017-05-06 1 views
-2

Ich habe 2 Python-Liste und ich möchte 4 verschiedene Werte mit verschiedenen Funktionen (TP, TN, FP, FN) berechnen. Es ist besser, wenn ich Parameter in der äußeren verschachtelten Funktion definieren kann, ohne Parameter für jede einzelne Funktion zu definieren, da die Parameter für alle 4 Funktionen gleich sind. Ich habe eine Funktion implementiert, aber es gibt nur die TP-Funktion Ausgabe. könnten Sie mir bitte jemand helfen unten könnte das Problem hierPython verschachtelte Funktionen für die gleichen Parameter

def evaluation(list1,list2): 


    def TP(): 

     count1 = 0 
     for i in range(0,35): 

      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='True': 
       count1+=1 
    #return count 

     print ('TP count :' + str(count1)) 

    return TP 

    def TN(): 
     count2 = 0 
     for i in range(0,35): 

      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='False': 
       count2+=1 
    #return count 

     print ('TN count :' + str(count2)) 
    return TN 

    def FP(): 
     count3 = 0 
     for i in range(0,35): 

      if (Jac_test_list[i].strip()=='True') & (Simmilar_list[i].strip()=='False'): 
       count3+=1 
    #return count 

     print ('FP count :' + str(count3)) 
    return FP 

    def FN(): 
     count4 = 0 
     for i in range(0,35): 

      if (Jac_test_list[i].strip()=='False') & (Simmilar_list[i].strip()=='True'): 
       count4+=1 
    #return count 

     print ('FN count :' + str(count4)) 
    return FN 
+2

Hinweis: 'return' beendet die Funktion. Nichts nach dem ersten 'return TP 'wird ausgeführt. – BrenBarn

+0

Was erwarten Sie beim Aufruf der Auswertung (list1, list2)? Kannst du ein Beispiel geben? – Allen

+0

Warum verwenden Sie hier verschachtelte Funktionen? Soll das eine Funktionsfabrik sein? Aber dann erstellen Sie Closures über 'Jac_test_list' und' Simmilar_list', die soweit ich weiß, nicht lokal sind. –

Antwort

0

Ich muß sagen, dass dies nicht der beste Weg zu teilen Parameter unter Funktionen, sondern nur zum Zweck der Festsetzung des Code zu finden, das, was Sie sind nach .

def evaluation(Jac_test_list,Simmilar_list): 

    def TP(): 
     count1 = 0 
     for i in range(0,35): 
      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='True': 
       count1+=1 
    #return count 
     print ('TP count :' + str(count1)) 


    def TN(): 
     count2 = 0 
     for i in range(0,35): 
      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='False': 
       count2+=1 
    #return count 
     print ('TN count :' + str(count2)) 


    def FP(): 
     count3 = 0 
     for i in range(0,35): 

      if (Jac_test_list[i].strip()=='True') & (Simmilar_list[i].strip()=='False'): 
       count3+=1 
    #return count 
     print ('FP count :' + str(count3)) 


    def FN(): 
     count4 = 0 
     for i in range(0,35): 
      if (Jac_test_list[i].strip()=='False') & (Simmilar_list[i].strip()=='True'): 
       count4+=1 
    #return count 
     print ('FN count :' + str(count4)) 

    TP() 
    TN() 
    FP() 
    FN() 
+0

vielen Dank, das funktioniert. Wenn es Ihnen nichts ausmacht, können Sie mir sagen, wie Sie die Parameter für Vorfälle wie diese am besten teilen können –

Verwandte Themen