2017-02-25 66 views
0

我只是想问一下,如果有可能将此代码转换为列表理解?我使用python 2.7+如何将此代码块转换为列表理解

的代码如下所示:

for x in y: 
    if condition1: 
     if condition3: 
      expression1 
     else: 
      expression2 
    else: 
     if condition5: 
      expression3 
     else: 
      expression4 

到目前为止,我已经成功地这样的代码:

c=[expression1 if condition3 else expression2 for x in y if condition1] 

它运行顺利,但它是不完整的。

我的问题是,每当我从第7行代码添加到11,这样的:

c=[expression1 if condition3 else expression2 for x in y if condition1 else expression3 if condition5 else expression4] 

它说,“语法错误”。 Uhmm。你能给我一些建议吗?我会很感激。让我知道这个问题是否有可能重复。

回答

2

你想for x in y之前的所有条件,你需要的代码嵌套分开,如果有这样的括号声明:

[( ... ) if condition1 else (...) for x in y] 

所以最终的理解是这样的:

c=[(expression1 if condition3 else expression2) if condition1 else (expression3 if condition5 else expression4) for x in y] 
+0

谢谢你非常喜欢Trelzevir ...... :-) –