繁体   English   中英

具有any()的Python lambda

[英]Python lambda with any()

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

我使用了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() 当找到第一个True值时, any()停止迭代。 在您的情况下, terms_file.write()返回None ,因此它将永远不会遇到True始终返回False

any会告诉您是否有任何术语出现line (因此而得名)。

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

present_terms = list(terms_file.write(term) for term in self.terms if term in line)

并将其写入文件(可能在加入列表项之后):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM