Como Funciona o range() no Python

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

    Comparação visual entre Python 2 e Python 3 com ícones minimalistas
    Fundamentos
    Foto do Leandro Hirt

    Python 2 vs Python 3: Principais Diferenças

    Se você está começando a estudar Python ou já trabalha com a linguagem, provavelmente já se deparou com uma dúvida

    Ler mais

    Tempo de leitura: 20 minutos
    22/12/2025
    Pessoa pensando com um monitor desfocado ao fundo
    Fundamentos
    Foto do Leandro Hirt

    Tipos de Dados em Python: int, float, str, list e dict

    Aprenda tudo sobre os principais tipos de dados em Python: int, float, str, list e dict. Guia completo com exemplos

    Ler mais

    Tempo de leitura: 14 minutos
    21/12/2025
    Ilustração de lista com itens marcados e ícone do Python
    Fundamentos
    Foto do Leandro Hirt

    Como Ordenar Listas no Python (Sort vs Sorted)

    Você já ficou confuso sobre quando usar sort() ou sorted() para organizar suas listas em Python? Não está sozinho. Esses

    Ler mais

    Tempo de leitura: 12 minutos
    20/12/2025
    Logo do Python com uma faca, simbolizando fatiamento
    Fundamentos
    Foto do Leandro Hirt

    Fatiamento em Python: Tudo Sobre Slicing

    O fatiamento (ou slicing) é uma técnica fundamental em Python que permite extrair partes específicas de sequências como listas, strings

    Ler mais

    Tempo de leitura: 11 minutos
    13/12/2025
    Logo CSV e logo do Python com um símbolo de '+'
    Fundamentos
    Foto do Leandro Hirt

    Como trabalhar com arquivos CSV no Python

    Aprenda a ler, escrever e manipular arquivos CSV usando Python. Guia completo com exemplos práticos da biblioteca csv padrão e

    Ler mais

    Tempo de leitura: 12 minutos
    10/12/2025
    Foto de um calendário
    FundamentosBibliotecas
    Foto do Leandro Hirt

    Datas e Horas no Python com datetime

    Aprenda a trabalhar com datas e horas no Python usando o módulo datetime. Guia completo com exemplos práticos de formatação,

    Ler mais

    Tempo de leitura: 13 minutos
    10/12/2025