Python range: gerando sequências de números!

A função Python range() foi introduzida na linguagem a partir da versão 3.x. Ela substituiu a função xrange(), que estava disponível até a versão 2.x do Python. Basicamente, essa função retorna um conjunto de números sequenciais conforme os parâmetros definidos ao utilizarmos um comando.

Uma das utilidades desse recurso é para construirmos estruturas de repetição, como o for loop, que permite executar um determinado bloco de códigos por várias vezes. Também podemos configurar como será a sequência de números retornada pela função, o que amplia a funcionalidade desse comando. Para demonstrar como ela funciona, preparamos este post com os tópicos:

Continue com a gente e boa leitura!

Python range: o que é e para que serve?

Basicamente, a função range() retorna um conjunto de números sequenciais, que podem ser definidos de acordo com os parâmetros utilizados pela função. Por padrão, o intervalo gerado por ela começa pelo número zero e é incrementado um a um até atingir o ponto de parada.

Por gerar números sequenciais, uma de suas utilidades é servir de apoio para a construção da estrutura de repetição for, que permite executar uma instrução ou um bloco de código por várias vezes. Em linguagens de programação, como em JavaScript, C, entre outras, podemos utilizar um contador numérico na própria instrução.

Entretanto, esse recurso é diferente na linguagem Python. Em vez de utilizarmos o contador, utilizamos a função range(). Para isso, associamos a função à estrutura de repetição for. Assim, ela retorna os números sequenciais e podemos determinar as repetições necessárias.

Mais adiante você verá um exemplo do uso da função range() em um loop for. Ela também pode ser utilizada sozinha para popular os valores de uma variável do tipo lista ou tupla, por exemplo.

Qual é a sintaxe?

Por padrão, os valores retornados na função range() são sequenciais e acrescidos de 1. Isso significa que, se utilizarmos o comando range(10), os valores retornados serão: “0, 1, 2, 3, 4, 5, 6, 7, 8 e 9”. Portanto, o valor inicial é zero e os números seguintes serão a somatória do valor atual mais 1. Basicamente, existem 3 sintaxes possíveis para a função range():

range(stop) 

Corresponde à sintaxe com o parâmetro obrigatório referente ao ponto de parada.

range(start, stop) 

Sintaxe com a definição do valor inicial e do ponto de parada.

range(start, stop, step) 

Sintaxe com a adição dos parâmetros opcionais start e step, além do stop — que é obrigatório.

Conheça os parâmetros da função range

A função range() aceita três parâmetros. Confira qual a finalidade de cada um deles.

Start

O start não é um parâmetro obrigatório e corresponde ao número inicial da sequência. Vamos utilizar o loop for em conjunto com a função range() para demonstrar como eles funcionam juntos. Por exemplo:

for i in range(2,5):
   print(i)
'''
resultado:
2
3
4
'''

Perceba que o primeiro número retornado é o 2, pois ele corresponde ao parâmetro start. Além disso, veja que o valor 5 não equivale à quantidade de vezes que a sequência é incrementada. Na prática, ele indica o ponto de parada do valor sequencial.

Stop

O stop é um parâmetro obrigatório e indica o número correspondente ao ponto de parada da sequência. É importante dizer que, por padrão, esse valor não é inserido na sequência, como ficou demonstrado no exemplo anterior, em que os números retornados foram apenas: 2, 3 e 4.

Step

O step indica qual valor será utilizado para incrementar a sequência numérica eé um parâmetro opcional. Como dissemos, o valor padrão de incremento é 1, entretanto podemos modificar essa condição. Veja um exemplo:

for j in range(2, 8, 2):
   print(j)
'''
resultado:
2
4
6
'''

Usando intervalos na função Python range

Para utilizar a função range() com segurança é importante relembrarmos alguns conceitos de matemática referentes a intervalo aberto e fechado, pois eles ajudam a entender como esse comando funciona.

Intervalo aberto ]x[

Dizemos que um intervalo é aberto quando os números extremos desse intervalo não estão presentes em seu conteúdo. O intervalo aberto entre 0 e 5 é escrito matematicamente por meio do símbolo: ]0, 5[. Perceba que temos os colchetes com a abertura contrária ao número. A representação matemática corresponde a:

Intervalo: ]a, b[

Conjunto: {x ∈ ℝ | a < x < b}

Isso significa que todos os números maiores que “a” e menores que “b” fazem parte do conjunto formado pelo intervalo ]a, b[. Portanto, o resultado do nosso exemplo corresponde a 1, 2, 3 e 4.

Intervalo fechado [x]

No intervalo fechado os números definidos no extremo da declaração fazem parte do conjunto, portanto ele é o inverso da definição anterior. Sua representação matemática equivale a:

Intervalo: [a, b] 

Conjunto: { x ∈ ℝ | a ≤ x ≤ b}

Assim, se utilizarmos o mesmo exemplo anterior, teremos o intervalo fechado entre 0 e 5 representado por [0, 5] e que corresponde ao conjunto numérico {0, 1, 2, 3, 4 e 5}.

Relação com a função range

Agora, vamos à relação entre esse conceito e a função range(). Cada parâmetro da função tem um comportamento específico para compor os elementos do intervalo. Veja como funciona cada um:

range( [start], stop[, step] )

O valor correspondente a start faz parte da composição do resultado, ou seja, se indicarmos range(2, 4), o número 2 estará presente no retorno da função, que será: 2 e 3.

Já o parâmetro stop representa o ponto de parada. Como o número indicado não será considerado como parte do resultado, temos apenas o resultado 2 e 3 no nosso exemplo. Se quiséssemos incluir o número 4 na resposta, deveríamos indicar a função range(2, 5). Assim, o retorno seria: 2, 3 e 4.

Por fim, temos o parâmetro step, que indica o quanto devemos somar a cada elemento, e corresponde ao valor informado na função. Isso significa que, se definirmos range(2, 10, 2), teremos como resultado a soma do número 2 a cada elemento, o que nos dá como retorno: 2, 4, 6 e 8.

É importante entender como cada parâmetro funciona para construirmos instruções que retornem o valor de acordo com o tipo de intervalo desejado, seja ele aberto ou fechado.

Exemplos de uso da função range

Existem diferentes situações em que podemos utilizar a função range(). Nada melhor que os exemplos práticos para conferirmos o que podemos fazer com esse recurso.

Gerar uma sequência numérica

Podemos gerar sequências numéricas com a função range() para diversas finalidades, como para popular uma lista ou uma tupla. Assim, em vez de definirmos cada um dos elementos da lista, podemos determinar qual será o intervalo numérico. Veja um código de exemplo:

>>> list(range(5))
#resultado: [0, 1, 2, 3, 4]

No código fonte acima, geramos uma lista sequencial que inicia no número zero, pois não informamos nenhum outro valor — e, por padrão, o primeiro número da sequência é o zero.

>>> tuple(range(1, 6))
#resultado: (1, 2, 3, 4, 5)

Nesse exemplo, geramos uma tupla que inicia no número 1 e termina no número 5. Perceba que informamos o ponto de parada igual a 6 para que o número 5 fizesse parte do intervalo.

Gerar sequência com intervalos maiores entre os elementos

Como mencionamos, o valor padrão para o intervalo entre os elementos é 1. Entretanto, podemos criar números sequenciais com intervalos diferentes. Veja um exemplo:

>>> list(range(0, 41, 4))
#resultado: [0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40]

No código acima geramos uma lista com os valores da tabuada do 4. Perceba que, para que o número 40 fizesse parte do resultado, indicamos o ponto de parada igual a 41.

Gerar sequências com número negativo

A função range() também pode gerar valores negativos. Para isso, devemos indicar o sinal de menos “-“ nos parâmetros necessários para construir a sequência. Veja um exemplo:

>>> list(range(10, -11, -2))
#resultado: [10, 8, 6, 4, 2, 0, -2, -4, -6, -8, -10]

No exemplo acima, criamos uma sequência com intervalo de 2 números entre os números 10 e -10. Perceba que indicamos o valor inicial igual a 10 e, no parâmetro step, informamos o valor negativo igual a -2. Além disso, informamos o ponto de parada igual a -11 para que o valor -10 fizesse parte do intervalo.

Veja outro exemplo em que todos os números da sequência são negativos:

>>> list(range(-10, -21, -2))
#resultado: [-10, -12, -14, -16, -18, -20]

Gerar resultado vazio

Existem situações em que o resultado gerado pela função range() é vazio. Portanto, é preciso atenção para não transformar a função em uma falha para o programa. Veja algumas situações que o resultado é vazio:

>>> list(range(0))
# resultado: []

Quando informamos apenas um parâmetro na função range(), ele representa o ponto de parada. Portanto, ao informarmos o valor zero, dizemos ao compilador que o intervalo parte do número zero (valor padrão) até o zero (ponto de parada). Por isso, a lista retornada não terá nenhum elemento.

Outra situação que também gera uma lista vazia é quando informamos o parâmetro start maior que o stop (ponto de parada). Isso faz com que o Python retorne uma lista vazia. Veja o exemplo:

>>> list(range(10, 5))
# resultado: []

Perceba que o valor inicial, que no nosso exemplo é 10, é maior que o ponto de parada representado pelo número 5. Portanto, o resultado será uma lista vazia.

A função Python range() retorna um conjunto de números sequenciais. Ela contém os parâmetros start, stop e step, que permitem configurar o retorno do intervalo de diferentes maneiras, como valores múltiplos de um determinado número e até intervalos com números negativos e positivos.

Gostou do nosso conteúdo sobre como funciona a função Python range()? Então, confira nosso post sobre como programar, que contém um passo a passo imperdível para iniciantes!