Бесконечный цикл создается при сдвиге и массиве

Вы также можете использовать порядковый номер дня, чтобы упростить его:

def date_range(start_date, end_date):
    for ordinal in range(start_date.toordinal(), end_date.toordinal()):
        yield datetime.date.fromordinal(ordinal)

Или, как предложено в комментариях, вы можете создать такой список:

date_range = [
    datetime.date.fromordinal(ordinal) 
    for ordinal in range(
        start_date.toordinal(),
        end_date.toordinal(),
    )
]
0
задан Christos Maris 18 January 2019 в 14:44
поделиться

2 ответа

Последнее, что вы делаете в цикле, это добавление элемента в массив, то есть длина массива всегда будет не меньше 1. Т.е., arr.length > 0 всегда оценивается как true.

Редактировать : добавление примера, чтобы показать, что происходит. В конце концов, arr.shift() оценивается как undefined, когда в массиве ничего не осталось, а затем вы возвращаете undefined обратно в массив, делая длину массива на 1 элемент длинной. Смотрите вывод консоли ниже.

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

let i = 0;

while (arr.length > 0 && i < 50) {
  arr.shift();
  arr.push(arr.shift());
  console.log(arr);
  i = i + 1;
}

0
ответ дан Nick 18 January 2019 в 14:44
поделиться
113 длина ноль.

0
ответ дан Wayne Burkett 18 January 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: