2016-06-05 10 views
-4

Ich bin neu in Python und noch lernen. ich ein Programm schreiben, das besondere Wort „ham“ in einer Liste zu finden, die diese Werte enthalten: ['hamsandwhich', 'ham', 2.2, 5]wie ein bestimmtes Stichwort in einer Liste zu finden und zu drucken Python

Wie kann ich bekommen Code, wenn „Schinken“ in der Liste und indiziert auch vorhanden ist. Mein Code ist wie folgt, aber die Ausgabe ist seltsam und ich kann nicht erkennen, was es sagt:

x="ham" 
y= =["hamsanwhich", "ham",2.2] 
for x in y: 
print ("found ham" 
y.index(x) 

Die Ausgabe ist wie folgt:

found ham 
0 
found ham 
1 
found ham 
2 
found ham 
3 

Sollte ich jede Teilkette einzeln suchen? und warum indexiert es 4 mal? obwohl "Schinken" sollte nur zweimal sein?

+3

Das ist nicht Ihr richtiger Code, da der Code, den Sie hier gepostet haben, mehrere Syntaxfehler enthält. – melpomene

Antwort

1

Dies kann funktionieren, wenn Sie den ersten Auftritt in der Suche nach der „Schinken“ in der Liste interessiert sind:

x="ham" 
y=["hamsanwhich", "ham",2.2] 
if x in y: 
    print(x," found in pos ",y.index(x)) 

Wie Sie sehen, gibt es keine Notwendigkeit, über die Liste manuell durchlaufen ist. Wenn jedoch das Wort „ham“ mehrfach in der Liste angezeigt und Sie brauchen, um alle Positionen zu finden, können Sie enumerate verwenden:

x="ham" 
y=["hamsanwhich", "ham",2.2,"ham",67,2,"ham"] 
for pos,element in enumerate(y): 
    if element==x: 
     print(x," found in pos ",pos) 

Wenn Sie substring Funktionalität:

x="ham" 
y=["hamsanwhich", "ham",2.2,"ham",67,2,"ham"] 
for pos,element in enumerate(y): 
    if x in str(element): 
     print(x," found in pos ",pos) 
     #If only interested in the first occurrence, uncomment the following line 
     #break 
+0

danke! aber eine weitere Frage ist, ob ich es auch brauche, um Schinken aus der Achillessehne zu finden? Wie suche ich den Teilstring? –

+0

Einfach, ich habe meine Antwort aktualisiert. Beachten Sie, dass 'str (element)' benötigt wird, da Ihr 'y' numerische Werte enthält. – hipoglucido

+0

Ich würde es schätzen, wenn Sie meine Antwort validieren, falls Ihr Problem gelöst wurde :) – hipoglucido

0

Es ein Bündel von Tipp- und Vertiefung Fehler waren im Code, aber wenn wir diejenigen nach oben zu beheben, würden Sie so etwas wie dieses:

x = "ham" 
y = ["hamsandwich", "ham", 2.2] 
for x in y: 
    print("found ham") 
    print(y.index(x)) 

Das tun nicht, was Sie erwarten weil die for Schleife die ursprüngliche x Variable mit jedem der Werte von y der Reihe nach überschreibt.

Was Sie wollen, ist die for zu einem if zu ändern, die die in aus einem Teil der Schleife Syntax ändert sich um einen Bediener zu sein, zu überprüfen, ob x ein Element in y ist:

x = "ham" 
y = ["hamsandwich", "ham", 2.2] 
if x in y: 
    print("found ham") 
    print(y.index(x)) 

Es gibt keine Schleife In dieser Version des Codes wird der Index 1 gedruckt.

Verwandte Themen