Função Python range(): Float, List, For loop Exemplos

O que é intervalo Python?

Python range() é uma função integrada disponível com Python em 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 será considerado 0, e aumentará o valor em 1 até o índice final.

Por exemplo, range(5) produzirá valores 0,1,2,3,4. O range() do Python é um comando muito útil e usado principalmente quando você precisa iterar usando o loop for.

Sintaxe

range(start, stop, step)

parâmetros

  • Сomeçar: (opcional) O índice inicial é um número inteiro e, se não for fornecido, o valor padrão é 0.
  • Pare: O índice de parada decide o valor no qual a função de intervalo deve parar. É uma entrada obrigatória para a função range. O último valor será sempre 1 menor que o valor de parada.
  • degrau: (opcional). O valor da etapa é o número pelo qual o próximo número do intervalo deve ser incrementado; por padrão, é 1.

Valor de retorno

O valor de retorno é uma sequência de números do índice inicial ao final fornecido.

Range() Função e histórico do Python

Python range() foi introduzido a partir da versão 3 do python, antes que xrange() fosse a função.

Tanto range quanto xrange() são usados ​​para produzir uma sequência de números.

Following são a diferença entre range e xrange():

alcance() intervalo x()
O range() fornece a sequência de números e retorna uma lista de números. A função xrange() fornece um generator objeto que precisa ser repetido em um loop for para obter os valores.
O range() retorna uma lista. xrange() retorna um generator objeto.
O método range() usa mais memória porque a lista retornada deve ser armazenada em comparação com xrange(). Como xrange() retorna um generator objeto, 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

Como o início não é fornecido, o início é considerado 0 e o último valor é fornecido até 9. O último valor é sempre 1 a menos que o valor fornecido, ou seja, stop-1.

for i in range(10):
    print(i, end =" ")

Saída:

0 1 2 3 4 5 6 7 8 9

Usando start e stop em 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 da sequência será 1 menor que o valor de parada 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

Saída:

3 4 5 6 7 8 9

Usando iniciar, parar e passo

O valor inicial é 3, então a sequência de números começará em 3. O valor final é 10, então a sequência de números irá parar em (10-1), ou seja, 9. O passo é 2, então cada valor na sequência irá ser incrementado em 2. Se o valor da etapa não for fornecido, o valor da etapa será padronizado como 1.

for i in range(3, 10, 2):
    print(i, end =" ")

Saída:

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 decrementado no intervalo fornecido.

Aumentando os valores no intervalo usando um passo positivo.

A etapa do parâmetro em range() pode ser usada 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 =" ")

Saída:

1 6 11 16 21 26

Faixa reversa: diminuindo os valores usando passo negativo

O parâmetro step 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 do valor do intervalo fornecido.

for i in range(15, 5, -1):
    print(i, end =" ")

Saída:

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 em Python range()

Vamos agora trabalhar no 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, in <module>
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Python apresenta um erro porque a função range() não suporta números de ponto flutuante para início, parada e etapa.

Usando loop for com intervalo Python()

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 =" ")

Saída:

MysqlMongodb PostgreSQL Firebase

No exemplo acima, usamos len(arr_list) como valor de parada. O loop for irá iterar até o valor de parada, ou seja, o comprimento do array e será 4, pois temos quatro itens em arr_list. O valor inicial será 0 e a etapa será 1. Portanto, os valores começarão em 0 e pararão em 3, ou seja, comprimento da matriz -1, significando 4 -1 = 3.

Usando Python range() como uma lista

Neste exemplo veremos como utilizar a saída do intervalo como uma lista.

Exemplo:

print(list(range(10)))

Saída:

[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 range() e usando o método list() poderíamos converter diretamente a saída do range para o formato de lista.

Usando caracteres em python range()

Até agora, usamos números inteiros em python range(). Também vimos que números de ponto flutuante não são suportados no intervalo python. Vamos tentar ver o resultado do que acontece quando usamos caracteres.

Exemplo:

for c in range ('z'):
        print(c, end =" ")

Saída:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer

Ocorre um erro dizendo que uma string não pode ser interpretada como um número 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)))

Saída:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Como acessar os elementos do intervalo

Você pode usar um loop for para obter os valores do intervalo ou usar o índice para acessar os elementos do intervalo ().

Usando loop for

Exemplo:

for i in range(6):
    print(i)

Saída:

0
1
2
3
4
5

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 range(5)[0] e o próximo valor range(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)

Saída:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Usando lista()

Este método imprimirá todos os elementos do range(). Usando list() ele retornará os elementos de range() em formato de lista.

Exemplo:

print(list(range(10)))

Saída:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Fornece a saída da lista para o intervalo fornecido.

Exemplo: Obtenha números pares usando range()

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 =" ")

Saída:

2 4 6 8 10 12 14 16 18

Mesclando saídas de dois intervalos()

Neste exemplo irá concatenar 2 funções range() com a ajuda da função itertools module chain().

Exemplo:

from itertools import chain 

print("Merging two range into one") 
frange =chain(range(10), range(10, 20, 1))
for i in frange: 
    print(i, end=" ")

Saída:

Merging two range into one
0 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 possui a função arange() que funciona e fornece resultados semelhantes como range(). O organize() aceita os mesmos parâmetros de range().

Sintaxe:

arange(start, stop, step)

Para trabalhar com NumPy siga os passos abaixo.

Passo 1: Importar módulo NumPy

import numpy

Caso durante a execução ocorra um erro dizendo módulo numpy não encontrado, você precisa instalar o módulo conforme mostrado na etapa 2.

Passo 2: Instale o NumPy

pip install numpy

Passo 3: Exemplo prático de arange() usando NumPy

import numpy as np 

for  i in np.arange(10):
   print(i, end =" ")        

Saída:

0 1 2 3 4 5 6 7 8 9

Números de ponto flutuante usando NumPy arange()

Não é possível obter a sequência de ponto flutuante usando range(), mas é possível usando NumPy arange().

Exemplo:

O intervalo que queremos é de 0.5 a 1.5. O valor será incrementado em 0.2.

import numpy as np 

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")        

Saída:

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 por causa do complexcapacidade de armazenar números decimais flutuantes 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 integrada disponível com Python em 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 será considerado 0 e aumentará o valor até o índice final.
  • Range() do Python foi introduzido a partir de python versão 3, antes disso xrange() era a função.
  • O range() fornece a sequência de números e retorna uma lista de números. A função xrange() fornece um generator objeto que precisa ser repetido em um loop for para obter os valores.
  • A etapa do parâmetro em range() pode ser usada para aumentar/diminuir os valores. Por padrão, é um valor positivo 1. Portanto, sempre fornecerá valores incrementados.
  • Python apresenta 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 possui a função arange() que funciona e fornece resultados semelhantes como range(). O arange() aceita os mesmos parâmetros que range().
  • É possível obter a sequência de ponto flutuante NumPy arange() que não é suportada usando range().