2017-03-04 5 views
0

Ich habe diesen Code in Python2.7 und ich möchte (wenn möglich) diesen Code in ein Listenverständnis umwandeln.Wie wandle ich diesen Code in ein Listenverständnis um?

z=[] 
if p==1: 
    z.append('a') 
    if m==2: 
     z.append('b') 

print ''.join(z) 

Das Problem ist es mir ein Fehler (Syntaxfehler) gibt, wenn ich den Code wie folgt umgewandelt:

z=['b' if m==2 'a' if p==1] 

print ''.join(z) 

Oder

z=['a' if p==1 'b' if ==m] 

print ''.join(z) 

Sie mich bitte, wenn diese Frage hat ein Duplikat. Ich würde Ihren Ratschlag schätzen.

Antwort

1

Dies ist ein schwieriger. Ich kam mit einer Lösung, die enumerate und eine Inline-if-Anweisung verwendet, um den Unterschied zwischen den beiden if-Anweisungen zu sagen. Ehrlich gesagt, wird die Verwendung einer Listen-Comp für diesen Code wahrscheinlich den Code verschleiern und es wäre besser, einfach bei den einfacheren if-Statements zu bleiben, die Sie bereits haben.

values = ['a', 'b'] # put the append arguments in here, you can also inline this but I put it apart to make the line shorter 
z = [val for idx, val in enumerate(values) if (m==2 and p==1 if idx==1 else p==1)] 
Verwandte Themen