如何将网站拦截器中含any()的列表推导式改写为基础Python语法
any()调用的非生成器写法改写方案
原代码的核心逻辑是:遍历内容的每一行,若当前行没有包含任意一个指定站点字符串,就将该行写入文件。原代码中any()的入参是生成器表达式,我们可以手动构建判断结果列表传入any(),完全不使用列表推导/生成器语法,符合学习需求。
正确改写代码
for line in content: # 逐个判断站点是否在当前行,收集布尔结果 check_result = [] for website in websites: check_result.append(website in line) if not any(check_result): file.write(line)
原有尝试代码的错误点
any(website)用法不符合语法要求:any()需要传入可迭代对象,传入单个字符串时,只要字符串非空就会返回True,完全没有实现「判断站点是否存在于当前行」的逻辑- 嵌套循环内直接输出行,会导致同一行匹配到多个站点时重复输出,和目标逻辑不符
内容的提问来源于stack exchange,提问作者Sandra Ray
相关产品推荐
相关产品推荐

