2017-07-27 4 views
0

Wie mit nachschlagen, ob eine Zeichenfolge in einer Liste ein Teil einer anderen Liste ist:Filtering Python-Listen eine andere Liste

b_names = ['robert', 'jon', 'arya'] 
a_names = ['rya', 'fish'] 


def filterA(name): 
for string in b_names: 
    if name in string: 
     return True 
    else : 
     return False 

final_list = filter(filterA,a_names) 

Die final_list leer ist, und sollte die Zeichenfolge rya enthalten haben seit rya Gegenwart als a Teilstring im Arya von der ersten Liste.

Was ist der Fehler hier?

Antwort

1

Ihre for Schleife endet zu früh.

Wenn name nicht in string ist, wird False zurückgegeben. Mit Robert als erstes Element in b_names wird die Schleife beendet und nicht mit Jon oder Arya fortgesetzt. Sie benötigen return False nach dem for Schleife

b_names = ['robert', 'jon', 'arya'] 
a_names = ['rya', 'fish'] 


def filterA(name): 
    for string in b_names: 
     if name in string: 
      return True 

    return False 


final_list = filter(filterA, a_names) 
print final_list 

>>> ['rya'] 
+0

Dank setzen für Spek Ich glaube, ich irgendwie die filterA Logik übersehen haben. Vielen Dank –