我是Python新手,发现了一些关于在字符串中查找最长单词的建议,但是没有一个建议可以解释一个字符串中包含许多与最长长度匹配的单词。在
玩完之后,我决定:
inputsentence = raw_input("Write a sentence: ").split()
longestwords = []
for word in inputsentence:
if len(word) == len(max(inputsentence, key=len)):
longestwords.append(word)
这样我就有了一个最长的单词列表,我可以用它来做一些事情。有更好的办法吗?在
NB:假设inputsentence
不包含整数或标点符号,只包含一系列单词。在
如果您只使用少量的文本来完成这项工作,则无需担心运行时效率:编程效率,在编码、审查和调试中,要重要得多。所以你的解决方案是好的,因为它是清晰的,足够有效的,甚至数千字。(但是,您应该在
for
循环之前只计算一次len(max(inputsentence, key=len))
。)但是,假设您确实想用一个可能有几GB长的大型语料库来完成这项工作?下面是如何在一个过程中完成这项工作,而不将每个单词存储在内存中(注意,
inputcorpus
可能是一个迭代器函数,它分阶段读取语料库):只保存所有最长的单词。如果你看到一个单词的长度超过了当前的最大值,那么它显然是这个长度的第一个单词,所以你可以开始一个新的列表。在如果某个最大长度的单词重复出现,你将得到几个副本。要避免这种情况,只需使用
set( )
而不是列表(并调整初始化和扩展)。在将其设为
defaultdict
,并调整以下内容:这个怎么样:
相关问题 更多 >
编程相关推荐