почему код перестает повторяться до i = 2? (Я видел в режиме отладки, но мне все еще не ясно)
for i in range(len(vec))
Что такое len(vec)
? vec
- список списков. len
получает только крайнюю длину. В этом случае 3
.
Попробуйте print(list(range(3))
, чтобы увидеть, какие значения i
вы получите. (Объяснение: range
верхняя граница является исключительной, поэтому она никогда не достигнет 3.)
Это гарантирует, что vec[i]
никогда не выйдет за пределы диапазона.
Тогда что именно делаетэто принимает в "len (vec) -1 -i? Я знаю, что len (vec) -1 является окончательным в моем списке, но почему -i?
vec[i][len(vec)-1-i]
vec[i]
выбираеттекущий подсписок.
len(vec)
- длина внешнего списка (3), len(vec)-1
- индекс последнего элемента, i
- от 0 до len(vec)-1
(включительно)
Давайте проанализируем, какие значения получит len(vec)-1-i
для каждого i:
- i = 0 => 2
- i = 1 => 1
- i = 2 => 0
Мы в основном "возвращаемся" с индексом.
Итак, мы получаем vec[0][2]
, vec[1][1]
, vec[2][0]
. То есть диагональ vec
от верхнего правого до нижнего левого.