Поскольку str.replace
не работает на месте , он возвращает копию .Как неизменяемые объекты, вам нужно назначить строки для элементов в вашем списке списков.
Вы можете назначить непосредственно вашему списку списков, если вы извлекаете целые числа индексации с помощью enumerate
:
L = [['a','bob'],['a','bob'],['a','john']]
for i, x in enumerate(L):
for j, a in enumerate(x):
if 'bob' in a:
L[i][j] = a.replace('bob', 'b')
Результат:
[['a', 'b'], ['a', 'b'], ['a', 'john']]
Более Pythonic будет использовать понимание списка для создания нового списка.Например, если только второе из двух значений содержит имена, которые необходимо проверить:
L = [[i, j if j != 'bob' else 'b'] for i, j in L]