Какой самый лучший способ найти индексы элемента по списку, содержащему его в Python - PullRequest
0 голосов
/ 29 августа 2018

У меня есть такой список, но с тысячами или, может быть, миллионами элементов:

test = [
  ("goodbye", "help", "buy","sell", "1.1.1.1", 25), 
  ("hi dude", "text", "friends","love", "blablabla", 14), 
  ("hi darling", "books", "letter","class", "club", 64)
]

Каким был бы наиболее оптимизированный код для поиска всех индексов элементов, содержащих слово «hi»? В приведенном выше примере он должен вернуть test[1] и test[2].

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы можете использовать enumerate и any, чтобы получить индекс всех элементов, содержащих слово 'hi'

>>> test = [("goodbye", "help", "buy","sell", "1.1.1.1", 25), ("hi dude", "text", "friends","love", "blablabla", 14), ("hi darling", "books", "letter","class", "club", 64)]
>>> [i for i,words in enumerate(test) if any('hi' in str(word) for word in words)]
[1, 2]
0 голосов
/ 29 августа 2018

Я считаю, что это самый оптимальный;

word = "hi"
matches = []
for tupl in test:
    for elem in tupl:
        if word in elem:
            matches.append(tupl)
            break
...