2016-04-15 12 views
-5

Ich habe diese DatenReihenfolge der Elemente in der for-Schleife

1. def lem(str): 
    return synsets for every str 

    2. list_terms = list of terms 
    3. list_st = list of strings as input for the function 

Was hier gebraucht wird, ist in der Liste der Begriffe eine beliebige Zeichenfolge als Ausgabe der Funktion zu finden. Das Problem bei mir ist die Reihenfolge der Elemente in dem folgenden Code

if any(i in list_terms for i in lem(item) for item in list_st): 
    do somethind 

Dieser Code den Fehler

NameError: name 'item' is not defined 

gibt Kann jemand helfen?

+0

Haben Sie versucht, die For-Schleifen zu wechseln? Wie '... für Artikel in list_st für i in lem (item)' –

Antwort

0

Hm, brauchst du wirklich brauchen es ein Listenverständnis hier zu sein? Ich denke, das Problem deutlicher sichtbar ist, wenn Sie dies explizit mehr aufschreiben:

terms = [] 
for item in list_st: 
    for i in lem(item): 
     if i in list_terms: 
      terms.append(i) 
if terms: 
    do_something 

Dieses in ein bisschen hässlich ist, dass es die Arrow Anti Pattern folgt, aber ein bisschen mehr klar macht, was hier vor sich geht.

Wenn Sie dies in ein Listenverständnis umwandeln, denken Sie daran, dass Sie die Anweisung die Reihenfolge oder die Loop-Deklarationen (siehe den obigen Kommentar) müssen.

Verwandte Themen