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