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

Python列表推导式报SyntaxError: invalid syntax错误求助

修正列表推导式的SyntaxError错误

嘿,我来帮你搞定这个列表推导式的语法问题!

问题根源

你的列表推导式触发SyntaxError,核心原因是完全搞反了列表推导式的结构顺序。Python里列表推导式的标准结构是:
[要存入列表的表达式 for 循环变量 in 可迭代对象 if 过滤条件]

你写的代码把for循环的部分直接丢了,还错误地把range(1,100)放到了表达式位置,这完全不符合语法规则,自然会报错。另外还有个小细节:判断值相等时,Python推荐用==而不是is——is是用来判断两个对象是否是同一个身份的,虽然在小整数、短字符串场景下偶尔会“巧合”成立,但这不是正确的相等判断方式,容易埋下隐藏bug。

修正后的代码

直接调整结构并修正判断符号,就能得到正常运行的列表推导式:

score = [a*a for a in range(1, 100) if (a*a)%2 == 0 and str(a*a)[-1] == '0']
print(score)

运行这段代码,就能得到和你普通for循环完全一致的结果:
[100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100]

关键调整点拆解

  1. 先写要添加到列表的目标表达式:a*a(对应普通循环里的score.append(a*a))
  2. 接着写循环遍历逻辑:for a in range(1, 100)(和普通循环的遍历部分完全一致)
  3. 最后写过滤条件:if (a*a)%2 == 0 and str(a*a)[-1] == '0'(把原来的is换成正确的==)

这样调整后,就完全符合Python列表推导式的语法规范啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:18:00