Rango de Python con número fijo de elementos e intervalo fijo

Oct 15 2020

Necesito crear algo rangeasí en Pyhton:

1 ... 4 ... 7 ... 10 ... 13 ... 16 ...

Pero me gustaría establecer no el final del rango , sino el número de elementos .

Por ejemplo:

range_num_of_elements(1, num_of_elements=4, interval=3)

Da como resultado:

[1, 4, 7, 10]

¿Cómo puedo hacerlo?

EDITAR: esta pregunta

Creando un rango con un número fijo de elementos (longitud)

No responde a mi pregunta. Quiero especificar inicio, intervalo, num , donde la pregunta anterior especifica inicio, final, num .

Respuestas

1 hiroprotagonist Oct 15 2020 at 19:46

podría definir su rango así:

def my_range(start, num_elements, step):
    return range(start, start+step*num_elements, step)

list(my_range(1, 4, 3))
# [1, 4, 7, 10]

esto tendría todas las características interesantes de range; p.ej:

7 in my_range(1, 4, 3)  # True
8 in my_range(1, 4, 3)  # False
2 khelwood Oct 15 2020 at 19:46

Puede utilizar una lista de comprensión :

[start + interval * n for n in range(num_of_elements)]

Dónde

start = 1
interval = 3
num_of_elements = 4

Esto le dará

[1, 4, 7, 10]

O simplemente puede calcular los argumentos apropiados para range, como sugirió Tom Karzes en los comentarios:

range(start, start + interval * num_of_elements, interval)