Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 语法错误-]位于返回行末尾_Python_Syntax Error - Fatal编程技术网

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]