Ответ 1
Вы можете сделать это:
for idx, item in enumerate(list):
if 'foo' in item:
item = replace_all(...)
list[idx] = item
У меня есть подозрение, что мне нужно получить доступ к элементу в списке (строк), изменить этот элемент (как строку) и поместить его обратно в список в том же индексе
Мне трудно получить элемент обратно в тот же индекс
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 может отслеживать индекс, который я сейчас нахожу в
Вы можете сделать это:
for idx, item in enumerate(list):
if 'foo' in item:
item = replace_all(...)
list[idx] = item
Вам нужно использовать функцию перечисления: документы 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
Общая идиома для изменения каждого элемента списка выглядит следующим образом:
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.