Faixa Python com número fixo de elementos e intervalo fixo

Oct 15 2020

Preciso criar um rangeassim em Pyhton:

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

Mas eu gostaria de estabelecer não o fim do intervalo , mas o número de elementos .

Por exemplo:

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

Dá como resultado:

[1, 4, 7, 10]

Como eu posso fazer isso?

EDIT: esta questão

Criação de um intervalo com número fixo de elementos (comprimento)

Não responde minha pergunta. Eu quero especificar início, intervalo, num , onde a pergunta acima especifica início, fim, num .

Respostas

1 hiroprotagonist Oct 15 2020 at 19:46

você pode definir seu intervalo assim:

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]

isso teria todos os recursos interessantes de range; por exemplo:

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

Você pode usar uma compreensão de lista :

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

Onde

start = 1
interval = 3
num_of_elements = 4

Isso vai dar

[1, 4, 7, 10]

Ou você pode apenas calcular os argumentos apropriados para range, como Tom Karzes sugeriu nos comentários:

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