@rsytrade

Как преобразовать список в диапазон?

Получаю список из двух цифр (иногда из одной) таким выражением:
years = list(map(int, re.findall(r"\d{4}", years)))

необходимо преобразовать этот список в диапазон, для обхода в цикле for.
Т.е. допустим получается список[2015, 2022], соответственно нужен range(2015, 2022+1)

PS.
интересуют способы альтернативные range(years[0], years[-1]+1)
  • Вопрос задан
  • 223 просмотра
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
years[1] += 1
range(*years)

Но это довольно уязвимый код, если годы парсятся из невалидированных пользовательских данных. Как минимум для такого кода будет критична возможность передачи третьего параметра или всего лишь одного.
В этом случае вы получите годы с указанным шагом или все годы от нуля.
Правда в случае передачи всего одного параметра код вальнётся на инкрементации второго года.

В итоге я бы провалидировал список годов убедившись, что он имеет ровно два элемента и они в разумнух пределах.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
ну если прям
интересуют способы альтернативные

то можно так
t = ['2015', '2022']
while(int(t[0])<=int(t[1])):
    print(t[0])
    t[0] = int(t[0]) + 1

или с учетом существующего преобразования...
t = [2015, 2022]
while(t[0] <= t[1]):
    print(t[0])
    t[0] += 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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