2017-12-20 11 views
1

指定された語句がNNで構成されているかどうか確認したいと思います。すべてがNNの場合、countの値を増やします。Pythonのポストバックパターンを確認してください

例えば、私のワードフレーズが[('micro', 'NN'), ('blog', 'NN'), ('texts', 'NN')]なら、私はそのカウントを1つ増やすべきです。

私の現在のコードは以下の通りです。

w='micro blog texts' 
postag = nltk.pos_tag(w.split()) 
      print(postag) 
      count_inside = 0 
      for ele in postag: 
       if ele[1] == 'NN': 
        count_inside = count_inside + 1 
      if count_inside == len(w.splits()): 
       count = count + 1 

正しく動作していても、私はこれをPythonで1行にできるかどうか知りたいですか?もしそうなら、私に知らせてください。

答えて

1

これにはall関数でジェネレータ式を使用できます。ここに短いデモがあります。

count = 0 
postag = [('micro', 'NN'), ('walk', 'V'), ('texts', 'NN')] 
count += all(u[1] == 'NN' for u in postag) 
print(count) 

postag = [('micro', 'NN'), ('blog', 'NN'), ('texts', 'NN')] 
count += all(u[1] == 'NN' for u in postag) 
print(count) 

出力

0 
1 

all機能と関連any機能は非常に効率的であり、そして彼らは、すぐに彼らは明確な結果を持っているようにチェックを停止を意味し、それらの短絡、。したがって、allは、偽の結果を検出すると直ちにジェネレータの式ループを停止します。

関連する問題