我对python比较陌生。我试图使用Lambda过滤List中的数据,但编译器给出了注释代码的语法错误。
# 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)]
未注释的部分有效,但注释部分给出了语法错误。我在这里做错了什么输入?
答案 0 :(得分:2)
问题在于:
w if not w in stop_words
这是ternary condition operator的前半部分,但它缺少else
块。
你根本不需要这个操作符,你的lambda应该是这样的:
lambda w:not w in stop_words
答案 1 :(得分:1)
x if y
表达式需要else
。它是一个必须返回一个值的表达式,如果没有else
它未定义在if
条件不适用的情况下应该发生什么。< / p>
至少你需要:
w if w not in stop_words else None
(同样x not in
是首选的直接操作,而不是not x in
。)