Что такое цикл for ? По сути своего механизма этот цикл работает
с переданной в него последовательностью как с итератором, когда у
нас есть последовательность и мы передаем ее в цикл, то сам цикл
работает со ссылкой на индекс последовательности.
Изменения этого значения не дает изменения значений в списке, заменяется лишь переменная в которой содержится ссылка:
ml_1 = [1, 2, 3, 4, 5]
print(f'Список до : {ml_1}')
for element in ml_1:
element = '+'
print(f'Список после : {ml_1}')
Список до : [1, 2, 3, 4, 5]
Список после : [1, 2, 3, 4, 5]Для того чтобы получить доступ к самим значениям, требуется использовать доступ по индексу, это можно сделать так:
ml_2 = [1, 2, 3, 4, 5]
print(f'Список до : {ml_2}')
for iter in range(len(ml_2)):
ml_2[iter] = '+'
print(f'Список после : {ml_2}')
Список до : [1, 2, 3, 4, 5]
Список после : ['+', '+', '+', '+', '+']По сути тут мы генерируем последовательность, которая по своим значениям будет соответствовать индексам последовательности.
Также можно использовать класс enumerate() который принимает
последовательность, и возвращает кортеж из индекса и значения
последовательности, и по этому индексу будем иметь доступ к списку,
и можем менять его:
ml_3 = [1, 2, 3, 4, 5]
print(f'Список до : {ml_3}')
for iter, value in enumerate(ml_3):
print(f'{iter} = {value} || ml_3[{iter}] = {ml_3[iter]}')
print(f'Список после : {ml_3}')
Список до : [1, 2, 3, 4, 5]
0 = 1 || ml_3[0] = 1
1 = 2 || ml_3[1] = 2
2 = 3 || ml_3[2] = 3
3 = 4 || ml_3[3] = 4
4 = 5 || ml_3[4] = 5
Список после : [1, 2, 3, 4, 5]