【问题标题】:Why isn't Python excepting error in list comprehension [duplicate]为什么Python在列表理解中没有例外错误[重复]
【发布时间】:2020-12-12 06:02:34
【问题描述】:

我有一个简单的列表理解,“else 0”错误地放在最后。我把它放在try 块中,所以我期待异常被捕获并执行打印语句。但是,它返回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?")

为什么没有捕捉到错误?

【问题讨论】:

  • [2 * x if x>1 else 0 for x in [1,2,3]]?
  • 问题在于您的列表理解的语法。
  • @BrianMcCutchon 这似乎是原因。感谢您链接。

标签: python


【解决方案1】:

语法错误不一致

正如@BrianMcCutchon 所提到的,如果您正在检查syntax error inconsistency,请使用eval 相同-

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

正如@Ch3steR 在他们的评论中提到的那样,请参阅this post 了解更多详情。

#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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 2013-06-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多