在下面的代碼中,我想要計算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)' 根據具體情況,您可能會得到更快的結果。 –