Первый цикл просто перебирает все индексы , доступные в списке di
. Для каждой записи в этом цикле второй цикл затем проверяет оставшиеся части di
.
Итак, на первой итерации мы изучаем значение 4
. Затем второй цикл будет проходить по списку, начиная с этой позиции и заканчивая до конца (он будет проверять элементы 5
и 6
).
На второй итерации мы рассмотрим запись 5
, а затем пройдем остаток списка во втором цикле (в данном случае 6
). Имеет смысл?
Как отметил комментатор, печатные заявления - ваш друг. Вот пример с некоторыми операторами печати, чтобы показать, как i
и j
изменяются:
di = [4,5,6,7]
for i in range(len(di)):
print(f"i: {i}")
total = di[i]
for j in range(i+1, len(di)):
print(f" - j: {j}")
total += di[j]
curr_di = total / ((j-i+1)**2)
Выход:
i: 0
- j: 1
- j: 2
- j: 3
i: 1
- j: 2
- j: 3
i: 2
- j: 3
i: 3