python - 连接大量列表的更有效方法?
问题描述
我有大量的句子(略超过 100,000)。每个平均包含 10 个单词。我正在尝试将它们放在一个大列表中,这样我就可以Counter
从collections
图书馆向我展示每个单词出现的频率。我目前正在做的是这样的:
from collections import Counter
words = []
for sentence in sentenceList:
words = words + sentence.split()
counts = Counter(words)
我想知道是否有办法更有效地做同样的事情。我已经等了将近一个小时,让这段代码完成执行。我认为连接是导致这需要很长时间的原因,因为如果我words = words + sentence.split()
用print(sentence.split())
它替换该行会在几秒钟内完成执行。任何帮助将非常感激。
解决方案
如果您只想计算元素,请不要构建一个大的、占用内存的列表。继续Counter
使用新的可迭代对象更新对象:
counts = Counter()
for sentence in sentenceList:
counts.update(sentence.split())
推荐阅读
- python-3.x - Anaconda 无法在 Windows10 上创建进程
- python - 点击计数/页面查看功能 Django 应用程序
- site-prism - 是否有关于使用部分的 Siteprism 最佳实践
- java - 遍历多维数组后,如何仅打印一次消息?
- android - 键入时替换 Edittext 中的字符
- python - 如何转换 PySpark Word2Vec 模型并加载它如何 gensim Word2Vec 模型?
- python - 检查子进程是否中断,如果为真则重新启动
- gnome - Gnome 3 禁用“解锁私钥”模式 GUI
- java - 链接的 HashMap - 迭代 (Java)
- javascript - 在两个选择菜单中显示某些值