Función Python range(): flotante, lista, ejemplos de bucle For

¿Qué es el rango de Python?

Python range() es una función incorporada disponible con Python desde Python(3.x) y proporciona una secuencia de números basada en el índice de inicio y parada dado. En caso de que no se proporcione el índice inicial, el índice se considera 0 e incrementará el valor en 1 hasta el índice final.

Por ejemplo, range(5) generará valores 0,1,2,3,4. El range() de Python es un comando muy útil y se usa principalmente cuando tienes que iterar usando el bucle for.

Sintaxis

range(start, stop, step)

parámetros

  • comienzo: (opcional) El índice inicial es un número entero y, si no se proporciona, el valor predeterminado es 0.
  • parada: El índice de parada decide el valor en el que debe detenerse la función de rango. Es una entrada obligatoria para la función de rango. El último valor será siempre 1 menor que el valor de parada.
  • paso: (opcional). El valor del paso es el número en el que se debe incrementar el siguiente número del rango; de forma predeterminada, es 1.

Valor de retorno

El valor de retorno es una secuencia de números desde el índice de inicio hasta el final dado.

Función e historial de Python range()

Python range() se introdujo desde la versión 3 de Python, antes de que xrange() fuera la función.

Tanto range como xrange() se utilizan para producir una secuencia de números.

Following son la diferencia entre range y xrange():

distancia() xrange ()
El rango() proporciona la secuencia de números y devuelve una lista de números. La función xrange() da una generator objeto que necesita ser bucle en un bucle for para obtener los valores.
El rango() devuelve una lista. xrange() devuelve un generator objeto.
El método range() utiliza más memoria ya que la lista devuelta debe almacenarse en comparación con xrange(). Como xrange() devuelve un generator objeto, no proporciona valores instantáneamente y debe usarse dentro del bucle for para obtener los valores.
El uso de memoria es mayor, por lo que la ejecución del código es lenta cuando se trabaja con un gran conjunto de datos. La ejecución del código es más rápida usando xrange().

Usando rango ()

Este ejemplo muestra cómo imprimir los valores del 0 al 9 usando range().

El valor utilizado en el rango es 10, por lo que la salida es 0 1 2 3 4 5 6 7 8 9

Dado que no se proporciona el inicio, el inicio se considera 0 y el último valor se proporciona hasta 9. El último valor es siempre 1 menos que el valor dado, es decir, parada-1.

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

Salida:

0 1 2 3 4 5 6 7 8 9

Usando inicio y parada en rango()

En el código, el valor inicial es 3 y el valor final es 10. Aquí el índice inicial es 3, por lo que la secuencia de números comenzará desde 3 hasta el valor final. El último valor de la secuencia será 1 menos que el valor de parada 10-1 = 9.

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

Salida:

3 4 5 6 7 8 9

Usando inicio, parada y paso

El valor inicial es 3, por lo que la secuencia de números comenzará en 3. El valor de parada es 10, por lo que la secuencia de números se detendrá en (10-1), es decir, 9. El paso es 2, por lo que cada valor de la secuencia incrementarse en 2. Si no se proporciona el valor del paso, el valor predeterminado del paso es 1.

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

Salida:

3 5 7 9

Hasta ahora, hemos visto cómo la función range() proporciona el valor incrementado para el valor de parada dado. Probemos ahora con un ejemplo para obtener el valor disminuido en el rango dado.

Incrementar los valores en el rango usando un paso positivo.

El paso de parámetro en range() se puede utilizar para incrementar/disminuir los valores. De forma predeterminada, es un valor positivo 1. Por lo tanto, siempre dará valores incrementados.

El valor del paso tiene que ser positivo en caso de que desee valores incrementados como salida.

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

Salida:

1 6 11 16 21 26

Rango inverso: disminuir los valores usando un paso negativo

El paso del parámetro con valor negativo en range() se puede utilizar para obtener valores disminuidos. En el siguiente ejemplo, el valor del paso es negativo, por lo que la salida disminuirá del valor del rango proporcionado.

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

Salida:

15 14 13 12 11 10 9 8 7 6

El valor inicial es 15, el valor de parada es 5 y el valor de paso es un número negativo, es decir, -1. Con las entradas anteriores, la función range() disminuirá el valor de 15 en adelante hasta que alcance el valor de parada, pero aquí la diferencia es que el último valor será parada + 1.

Usando números flotantes en el rango de Python()

Trabajemos ahora en el rango() usando números de punto flotante.

Ejemplo:

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

En el ejemplo anterior hemos utilizado un valor de parada de 10.5.

La salida es:

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 genera un error porque la función range() no admite números de punto flotante para inicio, parada y paso.

Usando el bucle for con el rango de Python()

En este ejemplo usaremos una matriz de números y veamos cómo usar la iteración de la matriz dentro del bucle for usando range()

Ejemplo:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Salida:

MysqlMongodb PostgreSQL Firebase

En el ejemplo anterior hemos utilizado len(arr_list) como valor de parada. El bucle for se iterará hasta el valor de parada, es decir, la longitud de la matriz y será 4, ya que tenemos cuatro elementos en arr_list. El valor inicial será 0 y el paso será 1. Por lo tanto, los valores comenzarán desde 0 y se detendrán en 3, es decir, la longitud de la matriz -1 significa 4 -1 = 3.

Usando Python range() como una lista

En este ejemplo veremos cómo hacer uso de la salida del rango como una lista.

Ejemplo:

print(list(range(10)))

Salida:

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

Puede ver que la salida es un formato de lista. No fue necesario hacer un bucle en el rango() y usando el método list() pudimos convertir directamente la salida del formato de rango a lista.

Usando caracteres en el rango de Python()

Hasta ahora, hemos utilizado números enteros en Python range(). También hemos visto que los números de punto flotante no son compatibles con Python. Intentemos ver el resultado de lo que sucede cuando usamos caracteres.

Ejemplo:

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

Salida:

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

Genera un error que indica que una cadena no se puede interpretar como un número entero.

Para obtener la lista de alfabetos, puede personalizar el código y obtener el resultado deseado, como se muestra a continuación:

Ejemplo:

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

Salida:

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

Cómo acceder a los elementos del rango

Puede utilizar un bucle for para obtener los valores del rango o utilizar el índice para acceder a los elementos del rango().

Usando bucle for

Ejemplo:

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

Salida:

0
1
2
3
4
5

Usando índice

El índice se utiliza con rango para obtener el valor disponible en esa posición. Si el valor del rango es 5, para obtener el valor inicial, puede usar el rango(5)[0] y el siguiente valor rango(5)[1] y así sucesivamente.

Ejemplo:

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)

Salida:

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 los elementos del rango(). Usando list() devolverá los elementos de range() en formato de lista.

Ejemplo:

print(list(range(10)))

Salida:

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

Proporciona la salida de la lista para el rango dado.

Ejemplo: obtener números pares usando range()

El uso de range() obtendrá la lista de números pares en el rango proporcionado como entrada. Los parámetros para range() son, el inicio es 2, la parada es 20 y el paso es 2, por lo que los valores se incrementarán en 2 y darán números pares hasta la parada-2.

Ejemplo:

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

Salida:

2 4 6 8 10 12 14 16 18

Fusionar salidas de dos rangos()

En este ejemplo, se concatenarán 2 funciones range() con la ayuda de la función chain() del módulo itertools.

Ejemplo:

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

Salida:

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() con NumPy

El módulo NumPy tiene una función range() que funciona y proporciona resultados similares a range(). Organizar() toma los mismos parámetros que rango().

Sintaxis:

arange(start, stop, step)

Para trabajar con NumPy, siga los pasos que se indican a continuación.

Paso 1: Importar módulo NumPy

import numpy

En caso de que, durante la ejecución, aparezca un error que indique que no se encontró el módulo numpy, debe instalar el módulo como se muestra en el paso 2.

Paso 2: Instalar NumPy

pip install numpy

Paso 3: Ejemplo práctico de arange() usando NumPy

import numpy as np 

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

Salida:

0 1 2 3 4 5 6 7 8 9

Números de coma flotante usando NumPy arange()

No es posible obtener la secuencia de punto flotante usando range(), pero sí es posible usando NumPy arange().

Ejemplo:

El rango que queremos es de 0.5 a 1.5. El valor se incrementará en 0.2.

import numpy as np 

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

Salida:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

El resultado que obtenemos es un poco extraño, algunos de los números flotantes se muestran con 16 decimales. Esto sucede debido a la com.plexCapacidad de almacenar números flotantes decimales en formato binario. También puede redondear los valores si es necesario y limitarlos a los decimales que necesite.

Resumen

  • Python range() es una función incorporada disponible con Python desde Python(3.x) y proporciona una secuencia de números basada en el índice de inicio y parada dado. En caso de que no se proporcione el índice inicial, el índice se considera 0 y aumentará el valor hasta el índice final.
  • Python range() ha sido introducido desde Python versión 3, antes de eso, xrange() era la función.
  • El rango() proporciona la secuencia de números y devuelve una lista de números. La función xrange() da una generator objeto que necesita ser bucle en un bucle for para obtener los valores.
  • El paso de parámetro en range() se puede utilizar para incrementar/disminuir los valores. De forma predeterminada, es un valor positivo 1. Por lo tanto, siempre dará valores incrementados.
  • Python da un error para los números de punto flotante ya que la función range() solo admite valores enteros.
  • Se puede acceder a los valores de range() usando el bucle for, usando index y list()
  • El módulo NumPy tiene una función range() que funciona y proporciona resultados similares a range(). El arange() toma los mismos parámetros que el range().
  • Es posible obtener la secuencia de punto flotante NumPy arange() que no es compatible con range().