Range em Python: descubra o que é a função range e como usá-la

Avatar de Juliano Faccioni Juliano Faccioni
7 minutos de leitura 2 meses atrás

Quando começamos a dar os primeiros passos no mundo da programação com Python, um dos conceitos comuns que encontramos é o da função range. Mas, afinal de contas, o que é esse tal de range em Python? Por que ele é tão importante para quem está aprendendo a programar?

Neste artigo, você vai descobrir o que é a função range em Python e como ela pode ser usada para estruturar seus loops e sequências numéricas de maneira eficiente. Abordaremos os argumentos que ela aceita, bem como alguns casos comuns de uso. Vamos lá!

O que é a função range em Python?

A função range serve para criar uma sequência de números. Você pode passar um número único como argumento para a função, como range(10), para criar uma sequência numérica indo de zero até o número, sem incluí-lo. Adicionalmente, é possível escolher um número de início (por padrão, 0) e de “pulo” ou intervalo da sequência (por padrão, 1).

# Sequência de inteiros de 0 a 9
seq_numeros = range(10)

print(seq_numeros)
Testar

Neste caso, a função range(10) preparou uma sequência de números de 0 a 9 para nós. No entanto, para visualizarmos essa sequência, precisamos convertê-la em uma lista de Python:

seq_numeros = range(10)

print(list(seq_numeros))

# output: 
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Testar

Para que serve a função range?

O range é a principal forma de criar sequências numéricas em Python. Ele está incluso na biblioteca padrão de Python e é uma das funções built-in da linguagem. Portanto, não é preciso importar nada para ter acesso a ela.

Um dos usos mais comuns da função range em Python é para gerar números sobre os quais podemos iterar sobre em um loop.

Diferença entre lista e range em Python

Embora tanto as listas quanto a função range sejam usadas para trabalhar com sequências de valores, elas possuem algumas distinções fundamentais. Enquanto as listas são mutáveis e podem conter diferentes tipos de dados, o objeto range é imutável e gera sequências numéricas sob demanda, otimizando o uso de memória.

Por exemplo, uma lista é definida entre colchetes e pode conter uma mistura de tipos de dados:

# Criando uma lista com diferentes tipos de dados
minha_lista = [1, 'Dois', True]
print(minha_lista)
Testar

Em contrapartida, o range, como visto anteriormente, é invocado através de uma função própria na qual determinamos o valor final da sequência de números. Para visualizar uma lista de números de 0 a 9, por exemplo, podemos comparar as abordagens:

numeros_lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numeros_lista)

numeros_range = range(10)
print(list(numeros_range))
Testar

É importante salientar que um range em si não é uma lista, mas sim um objeto próprio do Python que gera os números conforme necessário. Isso o torna eficiente em termos de memória: se escrevermos range(1000000), os números não são computados de antemão. O range apenas mantém a lógica necessária para criar os números, um a um.

Argumentos da função range

O range em Python é uma função flexível, que aceita até três argumentos: o fim (stop), início (start) e pulo (step) da sequência. Dessa forma, conseguimos ajustar o comportamento da sequência numérica gerada, de acordo com a necessidade.

O argumento stop

O stop é o ponto final da nossa sequência. Quando passamos apenas um valor para o range, estamos passando o valor de stop.

Note que o valor de stop nunca aparece incluso na sequência numérica. Se utilizarmos range(5), estamos dizendo “crie números de 0 até 4, avançando de um a um”.

O argumento start

Quando queremos informar de onde a sequência deve começar, usamos o start. Isso é bastante útil quando não queremos iniciar a contagem a partir de zero.

Quando passamos dois argumentos para o range, o primeiro argumento corresponde ao valor de start. Por exemplo, range(3, 8) gera os números de 3 a 7, avançando de um a um.

O argumento step

O step define o tamanho do “pulo” entre os números na sequência. Por padrão, esse valor é 1, o que significa que avançamos pelos números de um a um.

Se quisermos apenas números pares, poderíamos criar um range um pulo de 2, como na sequência range(2, 11, 2). Isso geraria a sequência 2, 4, 6, 8, 10.

Note que o step só aparece quando passamos 3 argumentos para a função range. Ao combinarmos start, stop e step, somos capazes de criar sequências sob medida!

Podemos ver todos os argumentos da função range em ação no trecho de código a seguir. Nele, criamos uma sequência numérica de 3 a 9, pulando de 3 em 3:

seq_numeros = range(3, 10, 3)

print(list(seq_numeros))

# output:
# [3, 6, 9]
Testar

Exemplos de uso da função range

Agora que já sabemos o que é a função range e como seus argumentos funcionam, vamos aplicar esse conhecimento em alguns exemplos práticos.

Como usar for i in range em Python

Podemos combinar um loop for com a função range para fazer uma determinada ação um certo número de vezes:

# Repetindo uma frase 5 vezes
for i in range(5):
    print("Estou programando em Python!")
Testar

Observe que a variável numérica do range não é usada. Apenas precisamos defini-la para satisfazer a sintaxe do loop. Quando isso acontece, os programadores mais experientes em Python costumam utilizar _ como nome de variável, justamente como forma de indicar que ela não é relevante:

# Repetindo uma frase 5 vezes
for _ in range(5):
    print("Estou programando em Python!")
Testar

Como usar range len em Python

A função range é frequentemente combinada com a função len para gerar índices de uma lista. Assim é possível pegar cada um dos elementos da lista a partir do seu índice:

cores = ['vermelho', 'azul', 'verde']

for i in range(len(cores)):
    cor = cores[i]
    print(f'Cor no índice {i} é: {cor}')
Testar

Dito isso, uma dica em Python é utilizar a função enumerate nestes casos, que já retorna cada elemento juntamente de seu índice em um loop:

cores = ['vermelho', 'azul', 'verde']

for i, cor in enumerate(cores):
    print(f'Cor no índice {i} é: {cor}')
Testar

Como reverter um range

Para criar uma contagem regressiva com um range, podemos passar um valor negativo para o step:

# Contagem regressiva: 5, 4, 3, 2, 1
for i in range(5, 0, -1):
    print(i)
Testar

Essa construção pode ser um pouco confusa, porque o valor de start precisa ser maior que o stop. Mas, se preferir, pode também passar um range qualquer para a função reversed:

# Contagem regressiva: 5, 4, 3, 2, 1
for i in reversed(range(1, 6)):
    print(i)
Testar

Como criar um range decrescente

Para criar um range decrescente, basta passar um pulo negativo. Assim invertemos o range, que passa a ser gerado do seu maior número para o menor:

for i in range(10, 0, -1):
    print(f'Contagem: {i}')
Testar

Conclusão

Ao dominar a função range, você abre um leque de possibilidades para controlar seus loops em Python e gerar sequências numéricas de maneira eficiente. Ela é uma ferramenta indispensável no seu kit de programação Python.

Então, o que você está esperando? Comece a agora mesmo com o curso gratuito Python MasterClass, da Asimov Academy, e aprenda sobre range, loops, variáveis e muito mais!

Curso Gratuito

Curso gratuito de Python

Do zero ao primeiro projeto em apenas 2 horas

Criar conta gratuita

Comentários

Comentar
Você tem o Acesso Básico.
Libere seu acesso ao suporte dos professores Garanta seu acesso PRO para tirar todas suas dúvidas com nossa equipe.
Seja PRO