O que é Python Range?
Python range () é uma função embutida disponível com Python a partir de Python (3.x), e fornece uma sequência de números com base no índice de início e parada fornecido. Caso o índice inicial não seja fornecido, o índice é considerado 0 e aumentará o valor em 1 até o índice final.
Por exemplo, range (5) irá mostrar os valores 0,1,2,3,4. O Python range () é um comando muito útil e usado principalmente quando você tem que iterar usando o loop for.
Neste tutorial, você aprenderá:
- O que é Python Range?
- Sintaxe
- Função e histórico do Python range ()
- Usando intervalo ()
- Usando start e stop in range ()
- Usando start, stop e step
- Incrementando os valores na faixa usando um passo positivo.
- Intervalo reverso: diminuindo os valores usando o passo negativo.
- Usando números flutuantes no intervalo Python ()
- Usando for-loop com Python range ()
- Usando Python range () como uma lista
- Usando caracteres no intervalo python ()
- Como acessar os elementos de alcance
- Exemplo: obtenha números pares usando intervalo ()
- Mesclando saídas de dois intervalos ()
- Usando range () com NumPy
Sintaxe
range(start, stop, step)
Parâmetros
- start: (opcional) O índice inicial é um número inteiro e, se não for fornecido, o valor padrão é 0.
- parar: O índice de parada decide o valor no qual a função de intervalo deve parar. É uma entrada obrigatória para a função de intervalo. O último valor será sempre 1 menor que o valor de parada.
- etapa: (opcional). O valor da etapa é o número pelo qual o próximo número no intervalo deve ser incrementado; por padrão, é 1.
Valor de retorno:
O valor de retorno é uma sequência de números do índice de início ao fim fornecido.
Função e histórico do Python range ()
Python range () foi introduzido a partir do python versão 3, antes que xrange () fosse a função.
Tanto range quanto xrange () são usados para produzir uma sequência de números.
A seguir estão as diferenças entre range e xrange ():
faixa() | xrange () |
O intervalo () fornece a sequência de números e retorna uma lista de números. | A função xrange () fornece um objeto gerador que precisa ser executado em um loop for para obter os valores. |
O intervalo () retorna uma lista. | xrange () retorna um objeto gerador. |
O método range () usa mais memória porque a lista retornada deve ser armazenada em comparação com xrange (). | Como xrange () retorna um objeto gerador, ele não fornece valores instantaneamente e deve ser usado dentro do loop for para obter os valores. |
O uso de memória é maior, portanto a execução do código é lenta ao trabalhar em um grande conjunto de dados. | A execução do código é mais rápida usando xrange (). |
Usando intervalo ()
Este exemplo mostra como imprimir os valores de 0 a 9 usando range ().
O valor usado no intervalo é 10, então a saída é 0 1 2 3 4 5 6 7 8 9
Uma vez que o início não é fornecido, o início é considerado como 0 e o último valor é fornecido até 9. O último valor é sempre 1 menor que o valor fornecido, ou seja, parada-1.
for i in range(10):print(i, end =" ")
Resultado:
0 1 2 3 4 5 6 7 8 9
Usando start e stop in range ()
No código, o valor inicial é 3 e o valor final é 10. Aqui, o índice inicial é 3, então a sequência de números começará de 3 até o valor final. O último valor na sequência será 1 menor que o valor de parada 10-1 = 9.
for i in range(3, 10):print(i, end =" ")
Resultado:
3 4 5 6 7 8 9
Usando start, stop e step
O valor inicial é 3, então a sequência de números começará em 3. O valor de parada é 10, então a sequência de números terminará em (10-1), ou seja, 9. A etapa é 2, então cada valor na sequência será ser incrementado em 2. Se o valor da etapa não for fornecido, o valor da etapa é padronizado para 1.
for i in range(3, 10, 2):print(i, end =" ")
Resultado:
3 5 7 9
Até agora, vimos como a função range () fornece o valor incrementado para o valor de parada fornecido. Vamos agora tentar um exemplo para obter o valor diminuído no intervalo fornecido.
Incrementando os valores na faixa usando um passo positivo.
O passo do parâmetro no intervalo () pode ser usado para aumentar / diminuir os valores. Por padrão, é um valor positivo 1. Portanto, sempre fornecerá valores incrementados.
O valor do passo deve ser positivo caso você queira valores incrementados como saída.
for i in range(1, 30, 5):print(i, end =" ")
Resultado:
1 6 11 16 21 26
Intervalo reverso: diminuindo os valores usando o passo negativo.
O passo do parâmetro com valor negativo em range () pode ser usado para obter valores decrementados. No exemplo abaixo, o valor do passo é negativo, então a saída será decrementada a partir do valor do intervalo fornecido.
for i in range(15, 5, -1):print(i, end =" ")
Resultado:
15 14 13 12 11 10 9 8 7 6
O valor inicial é 15, o valor final é 5 e o valor do passo é um número negativo, ou seja, -1. Com as entradas acima, a função range () diminuirá o valor de 15 em diante até atingir o valor de parada, mas aqui a diferença é que o último valor será stop + 1.
Usando números flutuantes no intervalo Python ()
Vamos agora trabalhar em range () usando números de ponto flutuante.
Exemplo:
for i in range(10.5):print(i, end =" ")
No exemplo acima, usamos o valor de parada como 10,5.
O resultado é:
Traceback (most recent call last):File "python_range.py", line 1, infor i in range(10.5):TypeError: 'float' object cannot be interpreted as an integer
Python fornece um erro porque a função range () não oferece suporte a números de ponto flutuante para início, parada e etapa.
Usando for-loop com Python range ()
Neste exemplo, usaremos um array de números e, vamos ver como usar a iteração do array dentro do loop for usando range ()
Exemplo:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']for i in range(len(arr_list)):print(arr_list[i], end =" ")
Resultado:
MysqlMongodb PostgreSQL Firebase
No exemplo acima, usamos len (arr_list) como o valor de parada. O loop for irá iterar até o valor de parada, isto é, o comprimento do array e que será 4, já que temos quatro itens na arr_list. O valor inicial será 0 e o passo será 1. Então, os valores começarão de 0 e irão parar em 3, ou seja, comprimento da matriz -1 significando 4 -1 = 3.
Usando Python range () como uma lista
Neste exemplo, veremos como usar a saída de intervalo como uma lista.
Exemplo:
print(list(range(10)))
Resultado:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Você pode ver que a saída é um formato de lista. Não foi necessário fazer um loop no intervalo () e usando o método list (), pudemos converter diretamente a saída do formato intervalo para o formato de lista.
Usando caracteres no intervalo python ()
Até agora, usamos inteiros em python range (). Também vimos que os números de ponto flutuante não são suportados no intervalo python. Vamos tentar ver a saída do que acontece quando usamos personagens.
Exemplo:
for c in range ('z'):print(c, end =" ")
Resultado:
Traceback (most recent call last):File "python_range.py", line 1, infor c in range ('z'):TypeError: 'str' object cannot be interpreted as an integer
Ele lança um erro dizendo que uma string não pode ser interpretada como um inteiro.
Para obter a lista dos alfabetos, você pode personalizar o código e obter a saída desejada conforme mostrado abaixo:
Exemplo:
def get_alphabets(startletter, stopletter, step):for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):yield chr(c)print(list(get_alphabets("a", "h", 1)))
Resultado:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Como acessar os elementos de alcance
Você pode usar um loop for para obter os valores do intervalo ou usar o índice para acessar os elementos de intervalo ().
Usando for-loop
Exemplo:
for i in range(6):print(i)
Resultado:
012345
Usando o índice
O índice é usado com intervalo para obter o valor disponível naquela posição. Se o valor do intervalo for 5, para obter o valor inicial, você pode usar intervalo (5) [0] e o próximo intervalo de valor (5) [1] e assim por diante.
Exemplo:
startvalue = range(5)[0]print("The first element in range is = ", startvalue)secondvalue = range(5)[1]print("The second element in range is = ", secondvalue)lastvalue = range(5)[-1]print("The first element in range is = ", lastvalue)
Resultado:
startvalue = range(5)[0]print("The first element in range is = ", startvalue)secondvalue = range(5)[1]print("The second element in range is = ", secondvalue)lastvalue = range(5)[-1]print("The first element in range is = ", lastvalue)
Lista de uso ()
Este método imprimirá todos os elementos do intervalo (). Usando list () ele retornará os elementos de range () no formato de lista.
Exemplo:
print(list(range(10)))
Resultado:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Ele fornece a saída da lista para o intervalo fornecido.
Exemplo: obtenha números pares usando intervalo ()
Usar range () obterá a lista de números pares no intervalo fornecido como entrada. Os parâmetros para range () são, start é 2, stop é 20 e step é 2, então os valores serão incrementados em 2 e darão números pares até stop-2.
Exemplo:
for i in range(2, 20, 2):print(i, end =" ")
Resultado:
2 4 6 8 10 12 14 16 18
Mesclando saídas de dois intervalos ()
Neste exemplo, concatenará 2 funções range () com a ajuda da função chain () do módulo itertools.
Exemplo:
from itertools import chainprint("Merging two range into one")frange =chain(range(10), range(10, 20, 1))for i in frange:print(i, end=" ")
Resultado:
Merging two range into one0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Usando range () com NumPy
O módulo NumPy tem a função arange () que funciona e fornece saída semelhante, como range (). O arranjo () usa os mesmos parâmetros como intervalo ().
Sintaxe:
arange(start, stop, step)
Para trabalhar com o NumPy, siga as etapas abaixo.
Etapa 1 : importar o módulo NumPy
import numpy
No caso durante a execução, dá um erro dizendo numpy module not found, você precisa instalar o módulo conforme mostrado na etapa 2.
Etapa 2 : Instale o NumPy
pip install numpy
Etapa 3 : Exemplo de trabalho de arange () usando NumPy
import numpy as npfor i in np.arange(10):print(i, end =" ")
Resultado:
0 1 2 3 4 5 6 7 8 9
Números de ponto flutuante usando arange NumPy ()
Não é possível obter a sequência de ponto flutuante usando range (), mas é possível usando NumPy arange ().
Exemplo:
O intervalo que desejamos é de 0,5 a 1,5. O valor será incrementado em 0,2.
import numpy as npfor i in np.arange(0.5, 1.5, 0.2):print(i, end =" ")
Resultado:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
A saída que obtemos é um pouco estranha, alguns dos números flutuantes são mostrados com 16 casas decimais. Isso acontece devido à complexidade de armazenar números flutuantes decimais em formato binário. Você também pode arredondar os valores, se necessário, e limitá-los às casas decimais necessárias.
Resumo:
- Python range () é uma função embutida disponível com Python a partir de Python (3.x), e fornece uma sequência de números com base no índice de início e parada fornecido. Caso o índice inicial não seja fornecido, o índice é considerado 0 e irá incrementar o valor até o índice final.
- Python range () foi introduzido a partir da versão 3 do python, antes que xrange () fosse a função.
- O intervalo () fornece a sequência de números e retorna uma lista de números. A função xrange () fornece um objeto gerador que precisa ser executado em um loop for para obter os valores.
- O passo do parâmetro no intervalo () pode ser usado para aumentar / diminuir os valores. Por padrão, é um valor positivo 1. Portanto, sempre fornecerá valores incrementados.
- Python fornece um erro para números de ponto flutuante, pois a função range () suporta apenas valores inteiros.
- Os valores de range () podem ser acessados usando for-loop, usando index e list ()
- O módulo NumPy tem a função arange () que funciona e fornece saída semelhante, como range (). O arange () usa os mesmos parâmetros de range ().
- É possível obter a sequência de ponto flutuante NumPy arange () que não é suportada usando range ().