2017-02-25 64 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 ...... :-) –