Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 2.47 KB

File metadata and controls

63 lines (47 loc) · 2.47 KB

Функция enumerate

Что такое цикл 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]