2016-07-27 6 views
0

私は比較的新しいPythonです。私はLambdaを使ってList内のデータをフィルタリングしようとしていますが、コンパイラはコメント付きコードに対して構文エラーを返します。Python:List内でLambda関数を使用しているときの構文エラー

# documents = [(list(filter(lambda w:w if not w in stop_words,movie_reviews.words(fileid))),category) 
#   for category in movie_reviews.categories() 
#   for fileid in movie_reviews.fileids(category)] 
# 
documents = [(list(movie_reviews.words(fileid)),category) 
     for category in movie_reviews.categories() 
     for fileid in movie_reviews.fileids(category)] 

コメントアウトされたセクションは機能しますが、コメントのセクションには構文エラーがあります。ここで何が間違っているの?

答えて

1

x if y式にはelseが必要です。それは値を返さなければならない式です。elseがなければ、ifの条件が適用されない場合に起こるはずのことは定義されていません。非常に少なくとも

次のものが必要です。

w if w not in stop_words else None 

2

問題はここにある(またx not innot x inとは対照的に、好適な直接操作です。):

w if not w in stop_words 

はこれがあるがternary condition operatorの前半ですが、elseブロックがありません。

あなたが実際にあなたのラムダは、次のようになり、すべてでこの演算子を必要としない:働い

lambda w:not w in stop_words 
+0

感謝を –

関連する問題