Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!
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)TestarNeste 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]TestarPara 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)TestarEm 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.
Range e Memória
Um ponto importante a ser destacado é que a função range() não gera todos os números de uma vez e os armazena na memória. Em vez disso, ela cria um objeto do tipo range que é um iterável. Isso significa que os números são gerados sob demanda, o que é muito mais eficiente em termos de uso de memória, especialmente para sequências grandes.
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]TestarExemplos 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!")TestarObserve 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!")TestarComo 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}')TestarDito 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}')TestarComo 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)TestarEssa 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)TestarComo 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}')TestarConclusã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 para Iniciantes, da Asimov Academy, e aprenda sobre range, loops, variáveis e muito mais!
A ampla oferta de temas para o VS Code reforça a flexibilidade da IDE em adaptar a experiência de desenvolvimento às preferências do usuário, favorecendo conforto visual e engajamento sem impactar o desempenho. O ecossistema de extensões oferece opções consolidadas pela comunidade e mecanismos simples de instalação e descoberta, ampliando as possibilidades de personalização do ambiente de trabalho conforme diferentes perfis e contextos de uso.