Nesta aula estudaremos a função "range()" uma ferramenta muito utilizada junto a instrução "for", bem como, em todas as situações em que estamos trabalhando com sequências numéricas. |
A função range()
A função range()
retorna uma série numérica no intervalo enviado como argumento. A série retornada é um objeto iterável tipo range
e os elementos contidos serão gerados sob demanda.
É comum o uso da função range()
com a estrutura for loop. Desta formta temos que a cada ciclo o próximo elemento da sequência será utilizado de tal forma que é possível partirmos de um ponto e ir incrementando, decrementando x unidades.
DEFINIÇÃO DA FUNÇÃO range()
A seguir, temos a definição da função range() encontrada na documentação oficial do Python:
#coding: utf-8
range( stop ) #primeira definição ou definição simplificada
range( [start], stop[, step] ) #segunda definição ou definição completa
A função range()
exige a definição do último elemento da sequência numérica. Por padrão, o parâmetro start será igual a 0 e o step igual a 1.
PARÂMETROS DA FUNÇÃO range()
A função range() permite-nos especificar o início da sequência, o passo, e o valor final. O único parâmetro obrigatório é o que define quem será o último elemento da sequência.
- start - início da sequência
- stop - último elemento da sequência
- step - intervalo entre os elementos
Na definição da função range()
é utilizado a notação de conjuntos numéricos para documentar se o intervalo da sequência é aberto ou fechado. Então, os colchetes junto aos parâmetros indica se o intervalo é aberto ou fechado, isto é, se o número estará contido ou não na sequência numérica.
INTERVALO ABERTO E FECHADO
- intervalo aberto ] x [
Quando os colchetes se opõem ao número, temos um intervalo aberto. Assim, todos os números no intervalo estarão contidos na sequência numérica, menos os extremos.
Intervalo: ]a, b[ Conjunto: {x ∈ R | a < x < b} Tradução: números reais maiores do que a e menores do que b (quando o intervalo está aberto, entende-se que todos os números do intervalo estão contidos, menos o(s) extremo(s).
- intervalo fechado [ x ]
- Quando o colchete estiver de "acordo" (no sentido normal) ao número, tem-se um intervalo fechado. Assim, todos os números contidos neste intervalo estarão contidos inclusive os extremos da sequência. Intervalo: [a, b] Conjunto: {x ∈ R | a ≤x ≤ b} Tradução: números reais maiores ou igual a a e menores ou igual a b (quando o intervalo está fechado, entende-se que todos os números do intervalo estão contidos, inclusive o(s) extremo(s).
VOLTANDO AO PYTHON
Agora que já relembramos alguns conceitos da matemática, vamos rever a notação da função range()
:
#coding: utf-8
range( stop )
range( [start], stop[, step] )
Com a primeira notação é possível invocar a função definindo somente, o intervalo final, ou seja, definindo somente o parâmetro stop. Assume-se assim, que o início da sequência é igual a 0 e o final, igual ao valor que está sendo enviado como argumento.
Com a segunda notação, ou então, com a notação completa, temos a capacidade de definir (1) o início da sequência (2) o último elemento e (3) o passo, isto é, o intervalo entre cada elemento.
EXEMPLO DE USO DA PRIMEIRA NOTAÇÃO
Vamos desenvolver um simples exemplo demonstrando o uso da primeira notação estudada, assim, vamos invocar a função range()
e passar como argumento o últimos elemento da sequência numérica que desejamos.
É importante observar que na versão 3x do Python será retornado, pela função range()
, um objeto iterável, e não uma lista contendo os elementos propriamente dito. Por essa razão, iremos forçar a conversão do objeto iterável para o objeto list.
DEFINIÇÃO: range( stop[ ) DEFINIÇÃO MATEMÁTICA: [0,5[
#coding: utf-8
>>> list(range(5))
0, 1, 2, 3, 4
A função retornou uma lista contendo 5 elementos, onde o primeiro é o 0 e o último 4.
O primeiro elemento é igual a 0, até porque, quando não definido, assume-se que start=0. O último elemento é o 4, até porque, o parâmetro stop possui o intervalo aberto, isto é, o número definido não estará contido na sequência numérica.
EXEMPLOS DE USO DA SEGUNDA NOTAÇÃO
Vamos desenvolver um simples exemplo demonstrando o uso da segunda notação estudada.
DEFINIÇÃO: range( [start], stop[, step] ) DEFINIÇÃO MATEMÁTICA: [0,5[
- start - valor onde o intervalo deve começar
- stop - valor (menos um) onde o intervalo deve finalizar
- step - passo (intervalo entre os elementos da sequência)
Vamos gerar uma lista que contenha 4 objetos numéricos e que o primeiro seja igual a 2 e o último igual a 5.
Novamente, iremos converter o objeto iterável retornado pela função range()
para o tipo list
, para que o mesmo, tenha seus elementos impressos na saída padrão.
#coding: utf-8
>>>list(range(2, 6))
[2, 3, 4, 5]
No código acima, definimos o parâmetro start=2
e stop=6
logo, o primeiro elemento foi o 2, enquanto o último elemento, igual a 5.
PASSO OU INTERVALO ENTRE OS ELEMENTOS
O step
é o intervalo entre cada elemento numérico. Se por exemplo, gerarmos uma sequência numérica entre 0 e 10 e definirmos, será assumido por padrão, que o step
é igual a 1 e por essa razão, o elemento seguinte estará a 1 unidade do elemento anterior, e a lista será igual a: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
Agora, se nós gerarmos uma lista entre 0 e 10, porém, definirmos o passo como sendo igual a 2, a seguinte lista será retornada: [0, 2, 4, 6, 8].
Em ambos os casos os estamos trabalhando com uma sequência numérica num mesmo intervalo, porém, no primeiro exemplo o intervalo entre os elementos é igual a 1 unidade, enquanto que no segundo exemplo, o espaço entre os elementos é de 2 unidades.
No código a seguir, vamos gerar uma lista no intervalo 2 à 10 e o step
será igual a 2 unidades.
#coding: utf-8
>>> list(range(2, 10, 2))
[2, 4, 6, 8]
>>> list(range(0, 30, 3))
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
No código acima, geramos 2 sequência numéricas, a primeira no intervalo de 2 à 10 e com o step igual a 2. Logo foram impresso 4 elementos no intervalo de 2 à 10.
Em seguida, novamente com a função range()
definimos uma segunda sequência numérica no intervalo de 0 à 30 e o step igual a 3. Logo, foi impresso uma lista, contendo 10 elementos, onde o primeiro é o 0 e o último o 27. Também é possível observar, que a sequência gerada é a tabuada de 3, faltando somente o último valor e para isso, bastava somente definir o intervalo final como sendo igual a 31.
EXEMPLOS DA DOCUMENTAÇÃO OFICIAL DO PYTHON
Os exemplos a seguir, foram extraídos da documentação oficial do Python e demonstram situação interessantes com o uso da função range()
. Vale a pena o estudo de cada situação detalhadamente.
#coding: utf-8
#gerando uma sequência de 0 à 9
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#gerando uma sequência de 1 à 11
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#gerando uma sequência de 0 à 30 com step=5
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
#gerando uma sequência os 5 primeiros números da tabuada de 3
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
#gerando uma sequência numérica negativa
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
#gerando uma sequência numérica vazia
>>> list(range(0))
[]
#gerando uma sequência numérica vazia,
#onde o interval inicial é maior do que o final
#por essa razão, há lista é nula
>>> list(range(1, 0))
[]
LINKS EXTERNOS
- Documentação oficial: https://docs.python.org/3.6/library/functions.html#func-range
Tags curso, python, lista, for loop, iteração, looping, range
Comentários
comments powered by Disqus