Python - лучший способ изменить значение списка с помощью итерации в соответствии с условием - PullRequest
0 голосов
/ 15 сентября 2018

Допустим, у меня есть этот список:

lst = [1, 2, 3, 4]

, и я хочу проверить, соответствует ли определенное значение условию, и если да, изменить это значение.Каков наилучший способ сделать это?Как сочетание ясности и эффективности.Я придумал эти 3 варианта:

# option 1
for i, item in enumerate(lst):
    if item == 2:
        lst[i] = 7

# option 2
counter = 0
for i in lst:
    if i == 2:
        lst[counter] = 7
    counter += 1

# option 3
for i in range(len(lst)):
    if lst[i] == 2:
        lst[i] = 7

1 Ответ

0 голосов
/ 15 сентября 2018

Я бы предложил использовать сочетание понимания списка и определения функции:

lst = [1, 2, 3, 4]

def replace(x,y=2,z=7):
    """Replace value if condition holds. 

    Keyword arguments:
    x -- value to check for replacement
    y -- x will be replaced if it has the value of y
    z -- x will be replaced by z if x is equal to y
    """
    if(x==y):
        x=z
    return x

lst = [replace(x,2,7) for x in lst]
...