如何将此代码块转换为列表理解

时间:2017-02-25 07:02:47

标签: python-2.7 list list-comprehension

我只是想问一下是否有可能将此代码转换为列表理解?我使用的是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。你能给我一些建议吗?我会很感激的。如果这个问题可能重复,请告诉我。

1 个答案:

答案 0 :(得分:2)

您需要for x in y之前的所有条件,并且您需要将嵌套if语句的代码与括号分开,如下所示:

[(  ...  ) 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]