2016-03-18 15 views
1

Ich versuche, die Liste nach Wörtern zu durchsuchen, die die Variable v enthalten. Wenn Sie gefunden werden, drucken Sie die Zeichenfolge, die die Variable enthält. Im Moment druckt es die gesamte Liste, wenn die if Aussage wahr ist.Python for loop mit einer Liste

v = "g" 
word = ["goodbye","goodmorning","foeach"] 

for s in word: 
    if v in s: 
     print(s) 
else: 
    print("finished") 
+2

Bitte können Sie klären? Welche Ausgabe erhalten Sie für den angezeigten Code und welche Ausgabe möchten Sie erhalten? –

+4

Ich wette, Sie haben 'print (s)' falsch kopiert, und in Ihrem ursprünglichen Code haben Sie 'print (word)' geschrieben – DaveBensonPhillips

+0

@HumphreyTriscuit: Klingt plausibel. –

Antwort

1
print('\n'.join(w for w in word if v in w)) 
print('finished') 
+0

Dies beantwortet die Frage überhaupt nicht: Es macht genau das gleiche, was der OP-Code tut. Das OP hat bereits festgestellt, dass dieser Code nicht die gewünschten Ergebnisse liefert. –

+1

Fehle ich das Problem falsch? Dies geht durch Strings in einer Liste und druckt nur diejenigen, die 'v' enthalten, in diesem Fall string' 'g''. Nach Abschluss wird "fertig" gedruckt. –

+0

Ja, und genau das tut der OP-Code * schon *. Es ist klar aus der Frage, dass das nicht das gewünschte Verhalten ist. Eine Antwort zu schreiben, die genau dasselbe tut, indem man einen anderen Code verwendet (ganz zu schweigen von keinen Erklärungen), wird dem OP nicht helfen. Wir müssen verstehen, was das OP wirklich will. Warum denkst du, dass es eine nützliche Sache ist, einem bekennenden "totalen Anfänger" ohne Erklärungen einen Generator-Ausdruck zu präsentieren? –