为什么不是';列表理解中的t Python异常错误

为什么不是';列表理解中的t Python异常错误,python,Python,我有一个简单的列表理解,末尾的“else 0”位置不正确。我把它放在try块中,因此我希望捕获异常并执行print语句。但是,它返回的是SyntaxError:invalid syntax。代码如下: try: [2 * x for x in [1,2,3] if x > 1 else 0] except SyntaxError: print("Why isn't this printed?") 为什么没有捕获到错误?语法错误不一致 正如@BrianM

我有一个简单的列表理解,末尾的“else 0”位置不正确。我把它放在
try
块中,因此我希望捕获异常并执行print语句。但是,它返回的是
SyntaxError:invalid syntax
。代码如下:

try:
    [2 * x for x in [1,2,3] if x > 1 else 0]
except SyntaxError:
    print("Why isn't this printed?")

为什么没有捕获到错误?

语法错误不一致

正如
@BrianMcCutchon
所述,如果您正在检查,请使用
eval
进行检查-

try:
    eval("[2 * x for x in [1,2,3] if x > 1 else 0]") #<----
except SyntaxError:
    print("Why isn't this printed?")

列表理解中的语法错误

如果修复列表中的
else
,则错误将得到修复

try:
    [2 * x  if x > 1 else 0 for x in [1,2,3]] #<----
except SyntaxError:
    print("Why isn't this printed?")

[2*x如果x>1,那么[1,2,3]中x的值为0
?问题在于列表理解的语法。@BrianMcCutchon这似乎就是原因。谢谢你的链接。
try:
    [2 * x  if x > 1 else 0 for x in [1,2,3]] #<----
except SyntaxError:
    print("Why isn't this printed?")
#Returning element based on condition
[i for i in l if condition=True]

#Adding if else in list comprehension
[i if condition=True else j for i in l]