Подтвердить что ты не робот

Python изменить элемент в списке, сохранить обратно в списке

У меня есть подозрение, что мне нужно получить доступ к элементу в списке (строк), изменить этот элемент (как строку) и поместить его обратно в список в том же индексе

Мне трудно получить элемент обратно в тот же индекс

for item in list:
    if "foo" in item:
        item = replace_all(item, replaceDictionary)
        list[item] = item
        print item

теперь я получаю сообщение об ошибке

TypeError: list indices must be integers, not str

из-за этой строки list[item] = item

что имеет смысл! но я не знаю, как вернуть элемент в список по тому же самому индексу, используя python

Каков синтаксис для этого? В идеале цикл for может отслеживать индекс, который я сейчас нахожу в

4b9b3361

Ответ 1

Вы можете сделать это:

for idx, item in enumerate(list):
   if 'foo' in item:
       item = replace_all(...)
       list[idx] = item

Ответ 2

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

for place, item in enumerate(list):
    if "foo" in item:
        item = replace_all(item, replaceDictionary)
        list[place] = item
        print item

Кроме того, это плохая идея использовать список слов как переменную из-за того, что она является зарезервированным словом в python.

Поскольку у вас были проблемы с перечислением, альтернатива из библиотеки itertools:

for place, item in itertools.zip(itertools.count(0), list):
    if "foo" in item:
        item = replace_all(item, replaceDictionary)
        list[place] = item
        print item

Ответ 3

Общая идиома для изменения каждого элемента списка выглядит следующим образом:

for i in range(len(L)):
    item = L[i]
    # ... compute some result based on item ...
    L[i] = result

Это можно переписать с помощью перечисления() как:

for i, item in enumerate(L):
    # ... compute some result based on item ...
    L[i] = result

См. enumerate.