Gamma Python con numero fisso di elementi e intervallo fisso

Oct 15 2020

Ho bisogno di creare un rangesimile in Pyhton:

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

Ma vorrei stabilire non la fine dell'intervallo , ma il numero di elementi .

Per esempio:

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

Dà come risultato:

[1, 4, 7, 10]

Come posso farlo?

EDIT: questa domanda

Creazione di un intervallo con numero fisso di elementi (lunghezza)

Non risponde alla mia domanda. Voglio specificare inizio, intervallo, num , dove la domanda sopra specifica inizio, fine, num .

Risposte

1 hiroprotagonist Oct 15 2020 at 19:46

potresti definire la tua gamma proprio in questo modo:

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]

questo avrebbe tutte le belle caratteristiche di range; per esempio:

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

Puoi usare una comprensione dell'elenco :

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

Dove

start = 1
interval = 3
num_of_elements = 4

Questo darà

[1, 4, 7, 10]

Oppure puoi semplicemente calcolare gli argomenti appropriati range, come suggerito da Tom Karzes nei commenti:

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