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