Построение списка от мин до макс значения
Есть минимальное и максимальное значения:
min = 1
max = 7
Каким способом можно получить список диапазона значений от минимального до максимального (шаг единица), т.е.
[1, 2, 3, 4, 5, 6, 7]
Upd: И если шаг 0.5т.е на выходе [1, 1.5, 2, 2.5, 3, 3.5, 4 и тд]
Ответы (4 шт):
Автор решения: Jack_oS
→ Ссылка
min = 1
max = 7
my_list = [i for i in range(min, max+1)]
>>> my_list
[1, 2, 3, 4, 5, 6, 7]
PS List Comprehension и встроенная функция range()
UPD для нецелочисленного шага:
my_list = [round(i*step, 2) for i in range(min, int(max/step)+1)]
step = 0.5
>>> my_list
[0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0]
step = 0.35
[0.35, 0.7, 1.05, 1.4, 1.75, 2.1, 2.45, 2.8, 3.15, 3.5, 3.85, 4.2, 4.55, 4.9, 5.25, 5.6, 5.95, 6.3, 6.65, 7.0]
Автор решения: Danis
→ Ссылка
min = 1
max = 7
res = list(range(min, max + 1))
а если вы используете python 2, то можно просто так:
res = range(min, max + 1)
для работы с не целым шагом используйте np.arange
import numpy as np
min = 1
max = 7
step = 0.5
res = np.arange(min, max + step, step)
но numpy это очень тяжёлый модуль, поэтому место него можно использовать numeric_range из модуля more_itertools
from more_itertools import numeric_range
min = 1
max = 7
step = 0.5
res = list(numeric_range(min, max + step, step))
Автор решения: BPOH
→ Ссылка
>>> a = []
>>> for i in range(1,15):
... a.append(i)
...
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
Автор решения: Zhihar
→ Ссылка
Upd: И если шаг 0.5т.е на выходе [1, 1.5, 2, 2.5, 3, 3.5, 4 и тд]
def my_gen(limit_l, limit_r, step):
value = limit_l
while value < limit_r:
yield value
value += step
for num in my_gen(1, 10, 0.35):
print(num)
P.S.
вот так чуть-чуть поточнее будет (не будет накапливаться погрешность)
def my_gen(limit_l, limit_r, step):
index = 0
while limit_l + index * step <= limit_r:
yield limit_l + index * step
index += 1
for num in my_gen(1, 3.5, 0.35):
print(num)