A função range() é uma das mais usadas no Python, principalmente quando o assunto é laços de repetição. Ela serve para gerar uma sequência de números de forma automática, sem que você precise criar uma lista manualmente.
Mesmo sendo simples, o range() tem detalhes importantes que fazem toda a diferença no dia a dia de quem programa em Python. Neste artigo, você vai entender como o range funciona, como usá-lo em diferentes situações e quais são seus parâmetros principais.
O que é o range() no Python?
No Python, range() é uma função embutida (built-in) que gera uma sequência de números inteiros.
Em vez de escrever uma lista manual como [0, 1, 2, 3, 4], você pode usar:
Python
for numero in range(5):
print(numero)O range(5) cria uma sequência que começa em 0 e vai até 4, ou seja, o número final não é incluído.
Essa característica é chamada de intervalo exclusivo no fim.
Por que o range é tão usado em Python?
A função range() é usada principalmente em loops for, que servem para repetir instruções várias vezes.
Ela é muito útil porque:
- Economiza código, evitando criar listas grandes manualmente.
- Gasta pouca memória, já que o
range()não guarda todos os números na memória de uma vez. - Facilita a leitura, deixando o código mais limpo e direto.
Estrutura básica do range()
A função range() pode ser usada de três formas diferentes:
range(stop)
range(start, stop)
range(start, stop, step)
Vamos entender cada uma delas.
1. range(stop)
Usado quando você quer uma sequência que começa em 0 e termina antes do valor informado.
Python
for i in range(5):
print(i)O Python cria números de 0 até 4, parando antes do 5.
Isso é muito comum em laços simples.
2. range(start, stop)
Aqui você define o início e o fim da sequência.
Python
for i in range(2, 6):
print(i)O Python começa no número 2 e vai até 5, sem incluir o 6.
Isso é útil quando você não quer começar do zero.
3. range(start, stop, step)
Essa é a forma mais completa do range().
Você pode definir também o passo (o quanto o número aumenta a cada repetição).
Python
for i in range(0, 10, 2):
print(i)Nesse caso, o loop pula de dois em dois.
O valor de step define esse salto.
Usando valores negativos no range()
O parâmetro step também pode ser negativo, o que faz a contagem ser decrescente.
Python
for i in range(10, 0, -1):
print(i)Aqui o loop começa em 10 e termina em 1.
Quando o passo é negativo, o Python entende que você quer diminuir os números.
range() não cria uma lista completa na memória
Um erro comum entre iniciantes é achar que o range() cria uma lista completa.
Na verdade, ele gera os números sob demanda, o que economiza memória.
Você pode comprovar isso com o comando type():
Python
r = range(100)
print(type(r))Ou seja, r não é uma lista, e sim um objeto do tipo range.
Para transformá-lo em uma lista, use:
Python
lista = list(range(5))
print(lista)Exemplo prático: somando números com range()
Vamos fazer um exemplo mais útil.
Imagine que você quer somar todos os números de 1 a 10:
Python
soma = 0
for i in range(1, 11):
soma += i
print(soma)O código percorre todos os números e soma cada um deles.
Esse é um exemplo simples, mas mostra bem como o range() é prático em cálculos.
Dica: usando range() com len()
O range() também é muito útil para percorrer listas usando índices.
Por exemplo:
Python
nomes = ["Ana", "Carlos", "Maria"]
for i in range(len(nomes)):
print(f"Posição {i}: {nomes[i]}")Nesse caso, o range() vai de 0 até o tamanho da lista (sem incluir o último número).
Comparando range() com listas manuais
Veja a diferença entre usar range() e uma lista manual:
| Código com lista | Código com range() |
|---|---|
for i in [0,1,2,3,4]: | for i in range(5): |
| Usa mais memória | Usa menos memória |
| Precisa digitar cada número | Gera automaticamente |
| Difícil de mudar o tamanho | Fácil de ajustar com parâmetros |
Como inverter a ordem do range()
Além de usar step negativo, você também pode inverter a sequência usando a função reversed():
Python
for i in reversed(range(5)):
print(i)Essa abordagem é útil quando você quer percorrer números em ordem inversa sem mudar o step.
Range() em combinações e repetições
Você também pode combinar o range() com funções como enumerate() ou zip().
Por exemplo, para mostrar o índice e o valor ao mesmo tempo:
Python
nomes = ["Lucas", "Paula", "João"]
for i, nome in zip(range(len(nomes)), nomes):
print(i, nome)Essa combinação deixa o código mais organizado e previsível.
Conclusão
A função range() é uma das mais úteis e versáteis do Python.
Com ela, você pode gerar sequências numéricas de forma simples, sem ocupar muita memória.
Ela é perfeita para loops, contadores, índices de listas e até operações matemáticas.
Saber usar bem o range() é essencial para dominar as bases da programação em Python.
Perguntas Frequentes (FAQ)
1. O que é a função range() no Python?
É uma função que cria uma sequência de números inteiros de forma automática.
2. O range() inclui o último número?
Não. Ele vai até o valor anterior ao número final definido.
3. Como usar o range() com passo?
Use três parâmetros: range(início, fim, passo).
4. Posso usar números negativos no range()?
Sim. Basta usar um passo negativo, como range(10, 0, -1).
5. O range() cria uma lista completa?
Não. Ele gera os números conforme o programa precisa.
6. Como transformar um range em lista?
Use list(range(5)) para converter em lista.
7. O range() serve para loops for?
Sim. Ele é mais usado justamente dentro de laços for.
8. Posso usar o range() com len()?
Sim. Isso permite percorrer listas usando índices.
9. É possível inverter um range()?
Sim. Use reversed(range(n)) para inverter a ordem.
10. O range() é mais rápido que listas grandes?
Sim. Ele usa menos memória e é mais eficiente.






