Ist, wenn/sonst/wenn möglich in list comprehension?

Ich würde gerne wissen, ob es möglich ist, verwenden Sie eine list-comprehension mit if/else müssen nicht dazu führen, in eine Liste der gleichen Länge wie die Länge der Liste bearbeitet wird? (dh. ohne den letzten else)

>>> L = [0, 1, 2, 3, 4, 5, 6]
>>> [v * 10 if v < 3 else v * 2 if v > 3 else v for v in L] #if/else/if/else
[0, 10, 20, 3, 8, 10, 12]

funktioniert einwandfrei. Aber angenommen, ich möchte das weglassen der 3, erhalten:

[0, 10, 20, 8, 10, 12]  # No number 3

Ich hätte gedacht, dass das funktionieren würde:

>>> [v * 10 if v < 3 else v * 2 if v > 3 for v in L] #if/else/if

Aber es ist ein syntax-Fehler..

So, ich dachte, 'vielleicht' das funktionieren würde:

>>> [v * 10 if v < 3 else v * 2 if v > 3 else pass for v in L] #if/else/if/else pass

Aber es funktioniert nicht..

Dies ist eine Neugier Frage, ich weiß, dass es nicht zwangsweise die meisten lesbar/geeignete Ansatz, um die obige Verarbeitung.

Bin ich etwas fehlt? Kann es getan werden?
(Ich bin auf python 2.6.5)

InformationsquelleAutor fraxel | 2012-03-16
Schreibe einen Kommentar