Gamme Python avec un nombre fixe d'éléments et un intervalle fixe

Oct 15 2020

J'ai besoin de créer un rangecomme celui-ci dans Pyhton:

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

Mais je voudrais établir non pas la fin de la plage , mais le nombre d'éléments .

Par exemple:

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

Donne comme résultat:

[1, 4, 7, 10]

Comment puis-je le faire?

EDIT: cette question

Créer une plage avec un nombre fixe d'éléments (longueur)

Ne répond pas à ma question. Je veux spécifier le début, l'intervalle, le nombre , où la question ci-dessus spécifie le début, la fin, le nombre .

Réponses

1 hiroprotagonist Oct 15 2020 at 19:46

vous pouvez définir votre gamme comme ceci:

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]

cela aurait toutes les fonctionnalités intéressantes de range; par exemple:

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

Vous pouvez utiliser une compréhension de liste :

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

start = 1
interval = 3
num_of_elements = 4

Cela donnera

[1, 4, 7, 10]

Ou vous pouvez simplement calculer les arguments appropriés pour range, comme l'a suggéré Tom Karzes dans les commentaires:

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