2017-02-25 3 views
0

Ich möchte nur fragen, ob es möglich ist, diesen Code in eine Liste Verständnis zu verwandeln? Ich verwende Python 2.7+Wie transformiere ich diesen Block Code in Liste Verständnis

der Code wie folgt aussieht:

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

Bisher habe ich so Code:

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

Es läuft reibungslos, aber es ist unvollständig.

Mein Problem ist, wenn ich den Code aus Zeile 7 bis 11, wie folgt hinzu:

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

Es sagt: 'Syntaxfehler'. Uhmm. Kannst du mir einen Rat geben? Ich werde es zu schätzen wissen. Lassen Sie mich wissen, ob diese Frage ein mögliches Duplikat hat.

Antwort

2

Sie wollen alle Bedingungen vor for x in y, und Sie müssen den Code für die verschachtelte trennen, wenn Aussagen mit Klammern wie folgt aus:

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

Also das letzte Verständnis wie folgt aussieht:

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

Thank du sehr viel Trelzevir ... :-) –