Python 语法错误-]位于返回行末尾
抱歉,如果这是一个重复,但我没有看到任何其他语法错误的帖子,帮助。注释的代码可以工作,而未注释的代码在最后一段代码中给了我一个语法错误]。我相信列表理解是正确的,但我不一定要问这个问题。为什么我在“]?列表理解语法不正确。也许,您打算使用(假设Python 语法错误-]位于返回行末尾,python,syntax-error,Python,Syntax Error,抱歉,如果这是一个重复,但我没有看到任何其他语法错误的帖子,帮助。注释的代码可以工作,而未注释的代码在最后一段代码中给了我一个语法错误]。我相信列表理解是正确的,但我不一定要问这个问题。为什么我在“]?列表理解语法不正确。也许,您打算使用(假设l是一个iterable): 这相当于: [x for x in l if isinstance(x, int)] 很容易犯错误,但要坚持下去!列表理解是帮助缩短代码的非常有用的方法。最后一行应为: out = [] for x in l: if
l
是一个iterable):
这相当于:
[x for x in l if isinstance(x, int)]
很容易犯错误,但要坚持下去!列表理解是帮助缩短代码的非常有用的方法。最后一行应为:
out = []
for x in l:
if isinstance(x, int):
out.append(x)
如果您已经有了显式循环,那么实际上很容易将其转换为理解 因此,如果你有:
return [x for x in l if isinstance(x, int)]
然后只需删除newlist=[]
并将所有内容放在[…]
中:
newList = []
for x in l:
if isinstance(x, int):
newList.append(x)
下一步是移动前面附加的实际元素并删除:
[
for x in l:
if isinstance(x, int):
newList.append(x)
]
这将已经起作用,但通常也会删除换行符:
[
x
for x in l
if isinstance(x, int)
]
至少我是这样开始“学习”理解的,也许这对你也有帮助
之所以使用代码抛出SyntaxError,是因为它看起来像一个“三元”表达式,缺少
else
子句。三元函数如下所示:
[x for x in l if isinstance(x, int)]
在您的示例中,表达式1在l中是x,如果是instance(x,int)
,则条件是,而您缺少else表达式2
。在您的案例中,这个“三元”将被包装在一个列表中(如果您有意的话,将产生一个长度为1的列表)。例如:
expression1 if condition else expression2
这把它修好了。显然,我误解了列表理解是python中的一条经验法则,因为python没有编译器,而是动态运行代码。在某个地方看到语法错误的事实只意味着程序需要其他东西。还有一个很好的机会是,问题之前就开始了(就像这里的问题出现在“in”中),关于如何理解列表的顶级解释是毫无帮助的。我一直在和他们斗争,但这让事情变得容易多了。下面的解释也很有帮助。谢谢
expression1 if condition else expression2
>>> l = [1, 2, 3]
>>> [1 in l if isinstance(1, int) else None]
[True]