为什么不是';列表理解中的t Python异常错误
我有一个简单的列表理解,末尾的“else 0”位置不正确。我把它放在为什么不是';列表理解中的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
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]