值=計數(頻率): nltk.FreqDist('ageqwst')
<FreqDist: 'a': 1, 'e': 1, 'g': 1, 'q': 1, 's': 1, 't': 1, 'w': 1>
在list comprehension聲明然後,
[word for word in words if nltk.FreqDist(word) <= letters]
它做的每一個單詞的同樣的事情在語料庫所以它現在有兩個FreqDist
詞典它可以與你的if
條款進行比較。給定運營商<=
,它正在查找頻率小於/等於(duh)樣本letters
中的字數。這裏需要注意的重要事項是小於一塊。這允許它跳過我們的樣本不包含的單詞中的字母。
因此,如果我們改變經營者是明確的,
[word for word in words if nltk.FreqDist(word) == letters]
因爲有在所提供的語料庫沒有的話有任何樣品的奇異發生它會返回一個空列表,「ageqwst」 。
拿這個聲明例如:
words = nltk.corpus.words.words()
foo = nltk.FreqDist('foo')
print [word for word in words if nltk.FreqDist(word) <= foo]
>>> ['f', 'foo', 'o', 'of', 'of']
沒有意外在這裏,我們也看到了原始樣本(「富」)出現在列表中,因此,如果我們改變我們的運營商要明確,
print [word for word in words if nltk.FreqDist(word) == foo]
>>> ['foo']
我們得到與我們的樣本分佈完全相同的唯一詞彙列表。
最後一個例子:
words = nltk.corpus.words.words()
bar = nltk.FreqDist('bar')
print [word for word in words if nltk.FreqDist(word) <= bar]
>>> ['a', 'ar', 'b', 'ba', 'bar', 'bra', 'r', 'ra', 'rab', 'a']
我們仍然可以看到我們的樣品(「酒吧」)出現在列表中,但是,有與相同樣本分佈爲我們其他兩個詞,所以如果我們,我們仍然得到原始樣本('bar')加上樣本'bra'和'rab'的另外兩個迭代。這突出樣品的順序無關緊要這與蟒蛇mapping types的行爲是一致的。
我會強烈建議您通過閱讀NLTK Book。是的,它很長,是的,它有時會變幹,但它涉及到不同模塊的很多理論和方法。所以根據你問題中的陰謀水平,我認爲你會發現它具有洞察力。
我認爲您的問題的第二部分由http://www.rafekettler.com/magicmethods.html#comparisons – jonrsharpe