我有 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/