You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法用列表推导式判断字符串是否为列表中各字符串的子串?

问题原因及修复方案

语法错误的根源

你写的if file_name in MFII_file for MFII_file in MFII_files不符合Python语法规则。当你想在if条件里使用带for的遍历判断(生成器表达式)时,必须把整个生成器表达式用括号包裹起来,否则Python解释器无法正确识别语法结构,就会在for关键字处抛出语法错误。

逻辑上的额外问题

就算你补上括号写成if (file_name in MFII_file for MFII_file in MFII_files):,代码也不会按预期工作——因为生成器对象本身在布尔判断里会被视为True(只要生成器非空),不管file_name是否真的存在于某个列表元素中,都会执行print('yes')。

你真正需要的是判断是否存在任意一个列表元素包含file_name,这时候应该用any()函数,它会遍历生成器里的每个判断结果,只要有一个为True就返回True。

正确代码示例

MFII_files = ['patrick', 'domccc', 'joseph', 'harry']

file_name = 'ccc'

# 使用any()判断是否有元素包含file_name
if any(file_name in mfii_file for mfii_file in MFII_files): 
    print('yes')

如果你不想用any(),也可以用普通循环实现相同逻辑:

MFII_files = ['patrick', 'domccc', 'joseph', 'harry']
file_name = 'ccc'

found = False
for mfii_file in MFII_files:
    if file_name in mfii_file:
        found = True
        break
if found:
    print('yes')

内容的提问来源于stack exchange,提问作者ifrj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:12:07