Como Funciona o range() no Python

Atualizado em: 06/11/2025
Tempo de leitura: 6 minutos
Logo do Python com expressão pensativa e o texto range(), representando a função range no Python

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)
Pronto para executar

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)
Pronto para executar


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)
Pronto para executar


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)
Pronto para executar


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)
Pronto para executar


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))
Pronto para executar

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)
Pronto para executar

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)
Pronto para executar


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]}")
Pronto para executar


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 listaCódigo com range()
for i in [0,1,2,3,4]:for i in range(5):
Usa mais memóriaUsa menos memória
Precisa digitar cada númeroGera automaticamente
Difícil de mudar o tamanhoFá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)
Pronto para executar


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)
Pronto para executar


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.


Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Fundamentos
    Foto do Leandro Hirt

    Como rodar seu script Python no Docker em 5 minutos

    A tecnologia de containers revolucionou a forma como desenvolvemos e distribuímos software. Se você já passou pela frustração de um

    Ler mais

    Tempo de leitura: 9 minutos
    04/03/2026
    Fundamentos
    Foto do Leandro Hirt

    Como criar um gerenciador de senhas simples com Python

    A segurança digital tornou-se uma prioridade no cotidiano de qualquer pessoa que navega na internet. Com dezenas de contas e

    Ler mais

    Tempo de leitura: 12 minutos
    01/03/2026
    Fundamentos
    Foto do Leandro Hirt

    Como criar um bot de WhatsApp com Python em minutos

    Você já pensou em como seria prático ter um atendente virtual respondendo seus clientes ou amigos 24 horas por dia?

    Ler mais

    Tempo de leitura: 10 minutos
    01/03/2026
    FundamentosBibliotecas
    Foto do Leandro Hirt

    Descubra como gerar números aleatórios seguros com secrets

    Você já parou para pensar como o seu computador decide qual será o próximo número em um sorteio? No mundo

    Ler mais

    Tempo de leitura: 9 minutos
    27/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Como automatizar postagens no Twitter com Python

    Imagine a possibilidade de manter o seu perfil no Twitter (X) sempre ativo, compartilhando conteúdos relevantes, notícias de última hora

    Ler mais

    Tempo de leitura: 12 minutos
    26/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Como criar um pacote pip instalável em Python passo a passo

    Criar seu próprio pacote Python e disponibilizá-lo para a comunidade através do gerenciador de pacotes pip é um dos marcos

    Ler mais

    Tempo de leitura: 8 minutos
    26/02/2026