在python中检查条件后替换列表中的元素:执行"pythonic方式"

Abh*_*mar 0 python loops replace list

我有一个数字列表,如:

a = [2,4,5,12]
Run Code Online (Sandbox Code Playgroud)

我想通过从任何大于10的元素中减去10来更改列表.

我可以做到以下几点:

i = 0
for ax in a:
    if ax>10:
       ax = ax-10
       a[i] = ax
    i = i+1
Run Code Online (Sandbox Code Playgroud)

但这不是一种"pythonic"编码方式.如果我使用Fortran,那么我会很好用这个循环,但Python比这些结构化循环更好.

我可以用另一种方式吗?

iCo*_*dez 6

一种非常pythonic的方法是使用带有条件表达式列表推导:

>>> a = [2,4,5,12]
>>> a = [x-10 if x > 10 else x for x in a]
>>> a
[2, 4, 5, 2]
>>>
Run Code Online (Sandbox Code Playgroud)