Python Listenverständnis - einfach

7

Ich habe eine Liste und möchte eine bestimmte Funktion nur für diejenigen Einträge verwenden, die eine bestimmte Bedingung erfüllen - die anderen Einträge bleiben unverändert.

Beispiel: Sagen wir, ich möchte nur die Elemente multiplizieren, die gerade sind.

%Vor%

Gewünschtes Ergebnis:

%Vor%

Aber [elem * 2 for elem in a_list if elem %2 == 0] liefert [4, 8] (es wirkte zusätzlich als Filter).

Was ist der richtige Weg?

    
Lost_DM 01.10.2011, 11:13
quelle

3 Antworten

18

Verwenden Sie einen bedingten Ausdruck :

%Vor%

(Math Geeks Anmerkung: Sie können diesen speziellen Fall auch mit

lösen %Vor%

aber ich würde sowieso die erste Option bevorzugen;)

    
Fred Foo 01.10.2011, 11:15
quelle
2
%Vor%

oder, wenn Sie eine sehr lange Liste haben, die Sie an Ort und Stelle ändern möchten:

%Vor%

also, nur die geraden Elemente werden modifiziert

    
eyquem 01.10.2011 11:28
quelle
0

Sie könnten Lambda:

verwenden %Vor%

Bearbeiten - Nachdenken über agf 's Bemerkung Ich habe eine zweite Version meines Codes erstellt :

%Vor%     
Chaos Manor 01.10.2011 11:59
quelle

Tags und Links