Почему метод lower() меняет сразу две одинаковых соседних символа?
Подскажите, пожалуйста, почему в таком варианте поочередной замены каждой последующей буквы на заглавную происходит одновременная замена буквы "L"? Решение я нашел, а объяснение найти не смог
b = ['hello']
for i in b:
m = []
for j in i:
m.append(i.replace(j.lower(), j.upper()))
print(m)
['Hello', 'hEllo', 'heLLo', 'heLLo', 'hellO']
Ответы (2 шт):
Автор решения: Vladimir Chistov
→ Ссылка
Потому что функция replace заменяет все вхождения первого аргумента в строке на второй.
Работающий код:
b = ['hello']
for i in b:
m = []
for index, j in enumerate(i):
m.append(i[:index] + j.upper() + i[index + 1:])
print(m)
Результат:
['Hello', 'hEllo', 'heLlo', 'helLo', 'hellO']
Автор решения: vadim vaduxa
→ Ссылка
у replace есть третий аргумент - сколько раз меняем
a = 'qasAAn'
b = a.replace('A', '-', 1)
print(b) # 'qas-An'