python-3.x 为什么内联FreqDist失败?

uinbv5nw  于 2023-01-06  发布在  Python
关注(0)|答案(1)|浏览(156)

我写了一个简单的函数。

def common_long_words(text):
    sorted(w for w in set(text) if len(w) > 7 and (FreqDist(text))[w] > 7)

这个卡住了。
同样,[w for w in set(text5) if len(w) > 7 and FreqDist(text5)[w] > 7失败,它只是卡住了。
然而,这是可行的:

fdist5 = FreqDist(text5)
[w for w in set(text5) if len(w) > 7 and fdist5[w] > 7

它在Python中不是这样工作的吗?为什么会这样?还有,为什么会卡住,如果这是错误的,它应该作为错误,语法或运行时出来。
这工作,完美和快速:

>>> def common_long_words(text):
...     fdist = FreqDist(text)
...     print(sorted(w for w in set(text) if len(w) > 7 and fdist[w] > 7))
...
>>> for t in all_texts:
...     common_long_words(t)
ftf50wuq

ftf50wuq1#

为了停止循环的条件,你已经调用了两个方法,它们的大小是未知的,正如你在评论中提到的,你应该得到答案FreqDist(text),然后把它应用到你的条件上(这里,考虑一下你给出的FreqDist(text)的长度)这个例子是在nltk(text5)的第五本书上实现的。

def common_long_words(t):
   fdist = FreqDist(t)
   print(sorted([w for w in set(t) if len(w) > 7 and fdist[w] > 7]))
common_long_words(text5)

结果是:

['#14-19teens', '#talkcity_adults', '((((((((((', '........', 'Question', 'actually', 'anything', 'computer', 'cute.-ass', 'everyone', 'football', 'innocent', 'listening', 'remember', 'seriously', 'something', 'together', 'tomorrow', 'watching']

相关问题