擅长:python、mysql、java
<p>在我看来,最好的答案应该是@dfundako,因为当涉及到复杂的if/else时,只编写一个标准循环要容易得多。但是,如果您真的想把它作为一个列表理解,那么这里唯一的错误就是<code>pass</code>语句,您可以用<code>None</code>替换它,如下所示:</p>
<pre><code>validitychecker = [(lemmatizer.lemmatize(word), 1) if tag.pos_tag([word])[0][1] in ["NN", "NNS", "NNP", "NNPS", "FW"] else (lemmatizer.lemmatize(word), 2) if tag.pos_tag([word])[0][1] in ["PRP"] else (lemmatizer.lemmatize(word), 3) if tag.pos_tag([word])[0][1] in ["JJ"] else None for word in word_tokenize(sentence.lower())]
</code></pre>
<p>然后,只需执行<code>list(filter(None, validitychecker))</code>即可删除列表中的所有<code>None</code>。你知道吗</p>
<p>希望这有帮助!你知道吗</p>