[英]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.