Итерация в замкнутом диапазоне [a, b] в python
Я хочу перебрать закрытый диапазон целых чисел [a, b] в python, т.е. итерация от а до б, включая и а и б.
Я знаю следующий способ сделать это:
for i in range(a, b+1):
do_something(i)
Для итерации в обратном направлении (т. Е. В порядке b, b-1, b-2, ..., a) я делаю следующее:
for i in range(b, a-1, -1):
do_something(i)
Мне не нравится это сложение (b+1 в примере) и вычитание (a-1 в примере) для достижения закрытого конца диапазона. Я считаю его менее читаемым, чем аналог C / C++/Java (использование <=
в петле).
Есть ли у вас что-то в python, которое можно использовать для перебора закрытых диапазонов без ручного вмешательства в границы?
1 ответ
Очень просто определить свою собственную функцию и использовать ее:
def closed_range(start, stop, step=1):
dir = 1 if (step > 0) else -1
return range(start, stop + dir, step):
В бою:
>>> list(closed_range(1, 10))
0: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(closed_range(1, 10, 2))
1: [1, 3, 5, 7, 9]
>>> list(closed_range(1, 10, 3))
2: [1, 4, 7, 10]
>>> list(closed_range(10, 1, -1))
3: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> list(closed_range(10, 1, -2))
4: [10, 8, 6, 4, 2]
Сохраните в.py файл в \PythonXX\Lib\site-packages, а затем вы можете импортировать его для использования в другом месте.