python - FreqDist 中的平方和值,python

标签 python nltk

我有 python 2.7 代码来对 FreqDist(即 NLTK 频率分布)中的值求平方,并对所有平方求和。

例如,从这里: 你应该得到: 2*2 + 1*1 + 1*1 + 1*1 = 7

这对我有用,但我想知道是否有比这“更好”的方法:

        for word, frequency in t.freq_dist.iteritems():
            total += frequency*frequency

我这么问是因为我需要再次循环 freq_dist 以获取其他内容;就在这段代码之后,所以我认为如果有更好的方法的话,必须循环两次并不是一个好习惯......

最佳答案

lst = [2, 1, 1, 1]

使用 generator expression :

sum(i**2 for i in lst)

给出

7

或者,list comprehension也有效:

sum([i**2 for i in lst])

如果您以后不需要出于某种目的而使用平方值,那么生成器表达式是更好的选择,因为它仅根据需要创建一次值,而列表理解会在内存中创建整个列表。有关更多信息,请参阅此问题 comparing list comprehension vs generators .

关于python - FreqDist 中的平方和值,python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769320/

相关文章:

python - 标记停用词生成的标记 ['ha' , 'le' , 'u' , 'wa' ] 不在 stop_words

Python:用特定词提取句子

python - NLTK 中的简单标记化问题

python - NLTK和stanford中名词短语的中心查找根据NP的中心查找规则进行解析

python - 如何根据另一个数据框标准化 pandas 数据框

python - 在python中交换两行

python - 如何将函数列表组合成可调用对象

python - NLTK/NLP 构建多对多/多标签主题分类器

python - 如何将从命令行安装的 pip 模块添加到 PyDev 环境中?

python:相当于 Javascript "||"覆盖非真实值