I have a list and I want to use a certain function only on those entries of it that fulfills a certain condition – leaving the other entries unmodified.
Example: Say I want to multiply by 2 only those elements who are even.
a_list = [1, 2, 3, 4, 5]
Wanted result:
a_list => [1, 4, 3, 8, 5]
But [elem * 2 for elem in a_list if elem %2 == 0] yields [4, 8] (it acted as a filter in addition).
What is the correct way to go about it?
Use a conditional expression:
(Math geek’s note: you can also solve this particular case with
but I’d prefer the first option anyway 😉