Возможно, на этот вопрос уже дан ответ, но я не смог найти его в своем поиске.
В Python 3 я пишу код, который выглядит примерно так:
def func():
for item in list_A:
if item == 'duck': list_B.append(0)
elif item == 'goose': list_B.append(1)
else: list_B.append(item)
list_A = list_B
Мое намерение состоит в том, чтобы изменить значения в list_A условно. Например:
list_A = ['duck', 'duck', 'goose', 'duck', 'chicken']
func(list_A) -> [0, 0, 1, 0, 'chicken']
В идеале я хотел бы сделать это без создания второго списка. Я хотел бы найти что-то вроде следующего псевдо-кода:
list_A = [(if item == 'duck': 0, elif item == 'goose': 1, else: item) for item in list_A]
Я догадываюсь, что вышеприведенное не сработает, потому что вы не можете изменить список во время итерации по нему (?), Но если у кого-то есть что-то лучше, чем мой оригинальный метод, мне было бы очень интересно узнать об этом. Спасибо!