Как работает индексация в списке в данном случае? 1ый элемент списка становится -1ый, если начинать отсчет с конца?
Как работает индексация в списке в данном случае? 1-ый элемент списка становится -1-ым, если начинать отсчет с конца?
a = [i for i in range(10)]
for i in range(len(a) - 1, -1, -1):
print(a[i])
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Вообще это как бы не при чём тут, for i in range(len(a) - 1, -1, -1) - это просто цикл, работающий в обратную сторону от 9 до 0. Проверим с помощью печати переменных, что тут вообще происходит:
a = [i for i in range(10)]
for i in range(len(a) - 1, -1, -1):
print(f'i={i}, a[{i}]={a[i]}')
Вывод:
i=9, a[9]=9
i=8, a[8]=8
i=7, a[7]=7
i=6, a[6]=6
i=5, a[5]=5
i=4, a[4]=4
i=3, a[3]=3
i=2, a[2]=2
i=1, a[1]=1
i=0, a[0]=0
Не забывайте, что вторая граница range не включается в получающийся диапазон значений, в отличие от первой границы, так что до отрицательных индексов в вашем примере дело просто не доходит.
Но если вас интересует именно отрицательная индексация, то да - индекс с минусом означает элементы от конца массива:
for i in range(-1, -len(a)-1, -1):
print(f'i={i}, a[{i}]={a[i]}')
Вывод:
i=-1, a[-1]=9
i=-2, a[-2]=8
i=-3, a[-3]=7
i=-4, a[-4]=6
i=-5, a[-5]=5
i=-6, a[-6]=4
i=-7, a[-7]=3
i=-8, a[-8]=2
i=-9, a[-9]=1
i=-10, a[-10]=0