2016-06-05 4 views
-4

Я новичок в python и все еще учась. Я пишу программу, чтобы найти конкретное слово «ветчина» в списке, который содержит эти значения: ['hamsandwhich', 'ham', 2.2, 5]как найти и распечатать конкретное ключевое слово в списке python

Как я могу получить код, если в списке присутствует «ветчина» и индексирует его. Мой код выглядит следующим образом, но выход странно, и я не могу разобрать, что он говорит:

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

Выход следующим образом:

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

Должен ли я искать каждую подстроку по отдельности? и почему это индексирование 4 раза? хотя «ветчина» должна быть только дважды?

+3

Это не ваш настоящий код, потому что введенный здесь код содержит несколько синтаксических ошибок. – melpomene

ответ

1

Это может работать, если вы заинтересованы в поиске первого появления «окорок» в списке:

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

Как вы видите, нет необходимости вручную перебирать список. Однако, если слово «ветчина» может появляться несколько раз в списке, и вы должны найти все позиции, вы можете использовать enumerate:

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) 

Если вы хотите substring функциональность:

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

спасибо! но еще один вопрос: если мне также нужно найти ветчину из подколенного сухожилия? Как искать подстроку? –

+0

Легко, я обновил свой ответ. Обратите внимание, что 'str (element)' необходимо, так как ваш 'y' содержит числовые значения – hipoglucido

+0

Буду признателен, если вы подтвердите свой ответ в том случае, если он решит вашу проблему :) – hipoglucido

0

Там были куча опечаток и ошибок отступов в коде, но если мы фиксируем те, вы бы что-то вроде этого:

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

Это не делать то, что вы ожидаете потому что цикл for перезаписывает исходную переменную x с каждым из значений от y по очереди.

Что вы хотите изменить for к if, который изменяет in из части синтаксиса цикла быть оператор, проверка, если x является элементом в y:

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

Там нет петли в этой версии кода, а напечатанный индекс будет 1.

Смежные вопросы