Python列表理解 - 简单

Los*_*_DM 7 python list-comprehension

我有一个列表,我想只对那些满足某种条件的条目使用某个函数 - 保持其他条目不被修改.

示例:假设我想仅将那些偶数的元素乘以2.

a_list = [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

通缉结果:

a_list => [1, 4, 3, 8, 5]
Run Code Online (Sandbox Code Playgroud)

但是[elem * 2 for elem in a_list if elem %2 == 0]收益率[4, 8](它还充当了过滤器).

什么是正确的方法呢?

Fre*_*Foo 18

使用条件表达式:

[x * 2 if x % 2 == 0 else x
 for x in a_list]
Run Code Online (Sandbox Code Playgroud)

(数学极客注意:你也可以解决这个特殊情况

[x * (2 - x % 2) for x in a_list]
Run Code Online (Sandbox Code Playgroud)

但无论如何我更喜欢第一个选项;)