首页 > 解决方案 > 连接大量列表的更有效方法?

问题描述

我有大量的句子(略超过 100,000)。每个平均包含 10 个单词。我正在尝试将它们放在一个大列表中,这样我就可以Countercollections图书馆向我展示每个单词出现的频率。我目前正在做的是这样的:

from collections import Counter
words = []
for sentence in sentenceList:
    words = words + sentence.split()
counts = Counter(words)

我想知道是否有办法更有效地做同样的事情。我已经等了将近一个小时,让这段代码完成执行。我认为连接是导致这需要很长时间的原因,因为如果我words = words + sentence.split()print(sentence.split())它替换该行会在几秒钟内完成执行。任何帮助将非常感激。

标签: python

解决方案


如果您只想计算元素,请不要构建一个大的、占用内存的列表。继续Counter使用新的可迭代对象更新对象:

counts = Counter()
for sentence in sentenceList:
    counts.update(sentence.split())

推荐阅读