2016-07-27 32 views
0

我對python比較新。我正在嘗試使用Lambda過濾List中的數據,但編譯器爲我提供了註釋代碼的語法錯誤。Python:在列表中使用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 

(也x not in是相對於not x in首選的直接操作。)

2

的問題是在這裏:

w if not w in stop_words 

這是ternary condition operator的前半部分,但缺少else區塊。

你其實並不需要這個運營商所有,你的拉姆達應該是這樣的:

lambda w:not w in stop_words 
+0

感謝那些工作 –

相關問題