2017-12-18 7 views
1

Ich habe eine Liste von Zeichenfolgen, und ich versuche, die Position des ersten Buchstabens der Teilzeichenfolge in der Liste der Zeichenfolgen suchen . Ich benutze die find() -Methode, um dies zu tun, aber wenn ich versuche, die Position des ersten Buchstabens zu drucken, gibt Python die korrekte Position zurück, aber wirft danach eine -1, so wie es die Teilzeichenfolge nicht finden konnte nachdem es es finden konnte. Ich möchte wissen, wie man die Position des ersten Buchstabens der Teilzeichenfolge zurückgibt, ohne eine -1 nach dem korrekten Wert zurückzugeben.Die Position des ersten Buchstabens in der Unterzeichenfolge in der Liste der Zeichenfolgen (Python 3)

Hier ist mein Code:

mylist = ["blasdactiverehu", "sdfsfgiuyremdn"] 

word = "active" 

if any(word in x for x in mylist) == True: 
    for x in mylist: 
     position = x.find(word) 
     print(position) 

Die Ausgabe lautet:

5 
-1 

ich die Ausgabe gerade sein zu erwarten:

5 

Ich denke, es ist an die in Beziehung gesetzt werden kann Tatsache ist, dass die Schleife nach dem Teilstring für jeden String in der Liste sucht und nachdem sie die Position gefunden hat, sucht sie immer noch nach mehr gibt natürlich einen Fehler zurück, da nur ein Vorkommen des Teilstrings "aktiv" vorhanden ist, aber ich bin mir nicht sicher, wie ich die Suche nach dem erfolgreichen Finden eines Teilstrings stoppen kann. Jede Hilfe wird geschätzt, danke.

+0

tun können, Bitte lassen Sie mich wissen, wenn Sie meine Antwort als die benoten oder wenn weitere Hilfe benötigt wird, damit sich andere mit dem gleichen Problem darauf verlassen können. –

Antwort

1

In der Tat wird Ihr Code nicht so funktionieren, wie Sie es wollen, da jedes der Wörter den Teilstring enthält, wird es die Überprüfung für jeden einzelnen von ihnen tun. Eine gute Möglichkeit, dies zu vermeiden, ist die Verwendung eines Generators. Genauer gesagt, nächste()

default_val = '-1' 
position = next((x.find(word) for x in mylist if word in x), default_val) 
print(position) 

Es wird Sie geben einfach die Position der Teil „Wort“ für die erste Zeichenkette „x“, die für den Zustand if word in x, in der Liste ‚mylist‘ qualifizieren.

By the way, keine Notwendigkeit für == Wahr zu überprüfen, wenn eine() verwenden, ist es bereits True/False zurück, so dass Sie einfach if any(): ...

Verwandte Themen