Python lambda与any()

Python lambda与any(),python,lambda,any,Python,Lambda,Any,我在一个列表中有一个单词列表self.terms,还有一个字符串行。如果列表中的任何术语在行中,我想将它们写入一个文件术语\u文件 我使用了如下所示的any(),但这将返回一个布尔值 any(terms_file.write(term) for term in self.terms if term in line) 我怎样才能写进文件?我尝试添加一个lambda,但我对它们不太熟悉,所以没有效果。我得到了一些语法错误,但是在一些更改之后,我再次得到了False返回 使用any()可以做到这一点

我在一个列表中有一个单词列表
self.terms
,还有一个字符串
。如果列表中的任何术语在
行中
,我想将它们写入一个文件
术语\u文件

我使用了如下所示的
any()
,但这将返回一个布尔值

any(terms_file.write(term) for term in self.terms if term in line)
我怎样才能写进文件?我尝试添加一个lambda,但我对它们不太熟悉,所以没有效果。我得到了一些语法错误,但是在一些更改之后,我再次得到了
False
返回

使用
any()
可以做到这一点吗?

这里不要使用
any()
;您甚至不使用返回值

要编写所有匹配术语,请使用:

terms_file.write(''.join(term for term in self.terms if term in line))
但最好只使用常规循环;可读性很重要

for term in self.terms:
    if term in line:
        terms_file.write(term)
仅当您想知道测试的布尔结果时,才使用
any()
any()
在找到第一个
True
值时停止迭代。在你的例子中,
terms\u file.write()
返回
None
,因此它永远不会遇到
True
,并且总是返回
False
,不要在这里使用
any()
;您甚至不使用返回值

要编写所有匹配术语,请使用:

terms_file.write(''.join(term for term in self.terms if term in line))
但最好只使用常规循环;可读性很重要

for term in self.terms:
    if term in line:
        terms_file.write(term)

仅当您想知道测试的布尔结果时,才使用
any()
any()
在找到第一个
True
值时停止迭代。在您的情况下,
terms\u file.write()
返回
None
,因此它永远不会遇到
True
,并且总是返回
False

any
将告诉您
行中是否存在任何术语(因此得名)

您只需创建这些术语的列表:

present_terms = list(terms_file.write(term) for term in self.terms if term in line)
并将其写入文件,可能在加入列表项之后:

out_file.write(' '.join(present_terms))

any
将告诉您
行中是否存在任何术语(因此得名)

您只需创建这些术语的列表:

present_terms = list(terms_file.write(term) for term in self.terms if term in line)
并将其写入文件,可能在加入列表项之后:

out_file.write(' '.join(present_terms))

你是想写下所有的条款,还是只写第一个匹配的条款?无论是谁投了反对票和反对票,你能解释为什么这“不是一个真正的问题”吗?关于lambda中的任何()函数,这是一个完全“真实”的问题。我很抱歉,如果我没有10年的Python经验,他的说法可能听起来“太简单”或与你无关。你是想写所有的术语,还是只写第一个匹配的术语?无论是谁投了赞成票或反对票,你能解释为什么这“不是一个真正的问题”吗?关于lambda中的任何()函数,这是一个完全“真实”的问题。如果我没有10年的Python经验,我很抱歉,因为他的代码听起来可能“太简单”或与您无关。或者:
terms\u file.write(“”.join(filter(lambda term:term in line,self.terms))
如果您更喜欢
lambda
filter
作为筛选生成器语句。或者:
terms\u file.write(“”.join(filter.join)(filter(lambda term:term in line,self.terms))
如果您更喜欢
lambda
filter
而不是筛选生成器语句。