在出现特定元素之前计算列表中的元素数量

时间:2018-09-14 07:12:24

标签: python list text count element

假设我们有一个单词列表存储在这样的列表中:

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中问过这个问题。

1 个答案:

答案 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]