假设我们有一个单词列表存储在这样的列表中:
list_of_words = ["this", "is", "a", "text","for", "demonstration"]
此外,我还有一个选定单词的列表:
selected_words = ["hello", "text", "demonstration"]
我想计算在selected_words中与list_of_words中的单词匹配的单词之前,list_of_words中出现的单词(如果需要的话)的数量。
即selected_word中匹配的第一个单词是“文本”,并且list_of_words中该单词之前有3个单词。匹配的第二个单词是“ demonstration”,它前面有5个单词。因此输出应为[3,5]。
最有效的计算方法是什么?我似乎找不到其他人在python中问过这个问题。
答案 0 :(得分:1)
使用enumerate
和条件list comprehension:
[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]