Я могу определить совпадения, но не могу найти, где они.Python: если список содержит строку, напечатайте все индексы/элементы в списке, которые содержат его
Учитывая следующий список:
['A second goldfish is nice and all', 3456, 'test nice']
мне нужно искать матч (то есть «хороший») и напечатать все элементы списка, которые содержат его. В идеале, если ключевое слово для поиска было «хорошо» результаты должны быть:
'A second goldfish is nice and all'
'test nice'
У меня есть:
list = data_array
string = str(raw_input("Search keyword: "))
print string
if any(string in s for s in list):
print "Yes"
Так она находит матч и печатает как, ключевое слово и «Да», но это Безразлично Скажите мне, где это.
Должен ли я перебирать каждый индекс в списке и для каждого поиска в строке поиска «строка в s» или есть более простой способ сделать это?
Я так и сказал, что список не содержит такого индекса. Я думаю, что я просто получаю его, просматривая каждую запись и каждый раз просматривая. Это всего лишь медленный метод. –
Это не сработает, потому что 'string in s' возвращает True, если' string' является подстрокой 's', но' list.index (string) 'будет искать только там, где она есть, строка является элементом' element' в 'list'. – DSM
Я отредактировал, чтобы исправить этот DSM. Есть ли преимущество в использовании списков, таких как опубликовано Dan и bainikolaus? Я считаю, что моя версия намного читаема –