簡體   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