Подсчитать количество элементов в списке до появления определенного элемента - PullRequest
0 голосов
/ 14 сентября 2018

Предположим, у нас есть список слов, сохраненных в списке, подобном этому:

list_of_words = ["this", "is", "a", "text","for", "demonstration"]

Кроме того, у меня есть список выбранных слов:

selected_words = ["hello", "text", "demonstration"]

Я хотел бы сосчитатьколичество слов (если хотите, элементов), которые встречаются в list_of_words перед словами в selected_words, которые соответствуют слову в list_of_words.

Т.е. первое слово в selected_word, которое соответствует, - это «текст», и есть 3 словадо этого слова в list_of_words.Второе совпадающее слово - «демонстрация», перед которым стоят 5 слов.Поэтому на выходе должно быть [3, 5].

Какой самый эффективный способ рассчитать это?Я не могу найти кого-то еще, кто задал этот вопрос на python.

1 Ответ

0 голосов
/ 14 сентября 2018

Использование enumerate и условное понимание списка :

[i for i, word in enumerate(list_of_words) if word in selected_words]
# [3, 5]

Если задействованные списки очень велики, вам следует рассмотреть возможность преобразования selected_words вset заранее для улучшения проверки содержимого:

selected_words = set(selected_words)
[i for i, word in enumerate(list_of_words) if word in selected_words]
# [3, 5]
...