Почему range отрабатывает по разному
Кто может помочь и объяснить почему это range из первого варианта отрабатывает не так, как во втором. Ведь логика практически одна и та же. Я исключаю 0 индекс и увеличиваю значение на 1, что бы стало 1000.
вариант 1
maxlen = 1001
res = 0
for i in range(1, maxlen):
if i % 3 == 0 or i % 5 == 0:
res += i
print(res)
вариант 2
result = sum([x for x in range(1000) if (x%3==0 or x%5==0)])
print(result)
результаты
234168
233168
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Число 1000 подпадает под условие if i % 3 == 0 or i % 5 == 0, соответственно в сумму оно в первом случае попадает, а во втором нет, поскольку range выдаёт числа исключая верхнюю границу.
Тут 1000 попадает в цикл:
maxlen = 1001
for i in range(1, maxlen):
А тут не попадает:
x for x in range(1000)
Количество перебираемых элементов в обоих случаях одинаковое, а вот сами элементы - разные.