2017-10-02 3 views
0

Ich habe eine Funktion definiert, mit der ich ein bestimmtes Zeichen in einem Parameter finden und alle nachfolgenden Zeichen zurückgeben kann. Beispiel:Eine Liste durch eine "find" -Funktion übergeben = Fehler?

def function1(parameter1): 
    variable1 = parameter1[parameter1.find("&"):] 
    variable1 = variable1[1:] 
    return variable1 

Dies scheint ohne Problem auszuführen. Aber ich habe ein Problem mit meiner zweiten Funktion, die mir eine Liste durch die erste Funktion zu übergeben kann, vergleichen, und das Rück Wahr oder Falsch

def function2(list, variable1): 
    for parameter1 in list: 
     parameter1 = function1(list) 
     if variable1 == parameter1: 
      return True 
     else: 
      return False 

Dann definiere ich meine Liste und variable1 zu für function2 und Drucken:

list = ["abc&123", "def&456", "ghi&789"] 
variable1 = "123" 
print function2(list,variable1) 

Ich kann nicht scheinen, herauszufinden, was ich falsch gemacht habe. Irgendwie scheint es so zu sein, dass ich nicht weiß, wie ich die Liste durchlaufe, was zu Fehlern beim Teilen oder Finden führt (ich habe beides versucht) und/oder bei meinem Vergleich von Variable1 und Parameter1. Ich bin mir sicher, dass es hier ein kleines Problem gibt, das mich immer wieder stolpern lässt, aber für das Leben von mir kann ich es nicht herausfinden.

+2

Hinweis: Sie keine Variable 'list' nennen wie Sie' list' sind Shadowing gebautet, oder besser nicht geben Ihre Variablen/Funktionsnamen aus [\ [Python \]: Built-in-Funktionen] (https://docs.python.org/3/library/functions.html). – CristiFati

+1

Das war schlechte Formatierung meinerseits, soweit die Post geht. Im eigentlichen Code habe ich meine Variable "list" nicht benannt. Ich habe versucht, die Dinge so prägnant wie möglich zu halten, bevor ich sie hier posten konnte, da ich im Laufe der Jahre Beiträge mit Code gefunden habe, der zu spezifisch war, um schwierig in mein spezifisches Problem zu übersetzen. – xqj695

Antwort

0

Sie mischen list und parameter1.

def function2(list, variable1): 
    for parameter1 in list: 
     parameter2 = function1(parameter1) 
     if variable1 == parameter2: 
      return True 
     else: 
      return False 

Auch diese Funktion zurückgibt, wenn das erste Element in list geprüft. Sie können True zurück, wenn eines der Elemente passt oder False wenn nichts passend ist:

def function2(list, variable1): 
    for parameter1 in list: 
     parameter2 = function1(parameter1) 
     if variable1 == parameter2: 
      return True 
    return False 
Verwandte Themen