Python:在List中使用Lambda函数时出现语法错误

时间:2016-07-27 07:18:35

标签: python list lambda

我对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)]

未注释的部分有效,但注释部分给出了语法错误。我在这里做错了什么输入?

2 个答案:

答案 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。)