Python列表推导式提示SyntaxError invalid syntax错误如何解决
问题原因分析
- 核心诱因是上一行
filenames赋值语句存在括号语法错误:一是你错误把next()的默认返回值放到了walk()的入参列表里,二是整行结尾少了一个闭合next()的右括号。Python解释器遇到未闭合的括号时会认为当前行表达式未结束,会自动把下一行的列表推导式代码拼接进来解析,最终触发语法错误,且报错行号错位指向了列表推导式所在行。 - 若你的运行环境为Python 3.6以下版本,代码中使用的f-string语法不受支持,也会触发同类语法错误。
修复方案
1. 修正filenames赋值行的语法错误
将原filenames赋值行替换为如下代码,调整默认值参数位置同时补全右括号:
# next的第二个参数为迭代器为空时的默认返回值,不要传入walk的参数列表 filenames = next(walk(directory_name), (None, None, []))[2]
2. 兼容低版本Python(可选)
如果运行环境Python版本低于3.6,将列表推导式中的f-string替换为format写法即可:
parts = [i for i in range(1, count + 1) if not "seg-{}-v1-a1.ts".format(i) in filenames]
内容的提问来源于stack exchange,提问作者Gruber
相关产品推荐
相关产品推荐

