在下面的代码中,我想要计算word_list
中word_list
中每个单词的出现次数,下面的代码可以完成这项工作,但效率可能不高,有没有更好的方法做它?列表2中列表1的Python count元素发生
word_list = ["hello", "wonderful", "good", "flawless", "perfect"]
test = ["abc", "hello", "vbf", "good", "dfdfdf", "good", "good"]
result = [0] * len(word_list)
for i in range(len(word_list)):
for w in test:
if w == word_list[i]:
result[i] += 1
print(result)
先做过滤不是更有效吗? 此外,参考该页面:https://wiki.python.org/moin/TimeComplexity,列表中的查找是O(n),如果将'word_list'转换为组。 –
@ZaccharieRamzi今天有什么“在一组中进行查找?你是第二个暗示这一点的人。我的答案不清楚吗?我不会在列表中查找,只能在这里查找字典,这与查找集合中的速度一样快。另外,什么过滤? –
是的,你是对的我对我心中的想法感到困惑。 如果你这样做: 'words = set(word_list); new_test = [单词测试中的单词如果单词在单词中]; counts = collections.Counter(new_test)' 根据具体情况,您可能会得到更快的结果。 –