代码之家  ›  专栏  ›  技术社区  ›  jss367

为什么Python不排除列表理解中的错误[duplicate]

  •  0
  • jss367  · 技术社区  · 4 年前

    我有一个简单的列表理解,“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?")
    

    为什么错误没有被发现?

    1 回复  |  直到 4 年前
        1
  •  0
  •   Akshay Sehgal    4 年前

    语法错误不一致

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