Python Función range(): Ejemplos de flotador, lista y bucle For

⚡ Resumen inteligente

Python range() es una función integrada que genera una secuencia inmutable de números enteros desde un valor inicial hasta un valor final, sin incluir este último, utilizando un paso opcional para controlar el incremento.

  • 🔘 Sintaxis: range(start, stop, step) acepta hasta tres argumentos enteros, donde start tiene un valor predeterminado de 0 y step tiene un valor predeterminado de 1.
  • ☑️ Parada exclusiva: La secuencia siempre se detiene un valor antes del índice de parada, por lo que range(5) produce de 0 a 4.
  • Control de pasos: Un paso positivo incrementa los valores, mientras que un paso negativo retrocede para obtener un rango inverso.
  • 🧪 Límites de tipo: Solo se aceptan números enteros, por lo que los argumentos de punto flotante o de cadena generan un TypeError.
  • 🛠️ Números de coma flotante de NumPy: La función arange() de NumPy extiende el comportamiento de range() a secuencias de punto flotante.
  • 🤖 Flujos de trabajo de IA: El código de aprendizaje automático se basa en range() para iterar épocas de entrenamiento, minilotes y cuadrículas de hiperparámetros.

Python Función rango()

¿Qué es Python ¿Rango?

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

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

Sintaxis

La sintaxis de la función range() se muestra a continuación:

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 determina el valor en el que debe detenerse la función de rango. Es un dato de entrada obligatorio para la función de rango. El último valor siempre será uno menos que el valor de parada.
  • paso: (opcional) El valor del paso es el número por el cual se debe incrementar el siguiente número en el rango; por defecto, es 1.

Valor de retorno

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

Python range() Función e historial

Python range() ha sido introducido desde Python versión 3; antes de eso, xrange() era la función.

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

A continuación se detallan las diferencias 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() proporciona un objeto generador que debe repetirse en un bucle for para obtener los valores.
El rango() devuelve una lista. xrange() devuelve un objeto generador.
El método range() utiliza más memoria ya que la lista devuelta debe almacenarse en comparación con xrange(). Como xrange() devuelve un objeto generador, no proporciona valores instantáneamente y debe usarse dentro de un bucle for para obtenerlos.
El consumo de memoria es mayor, por lo que la ejecución del código es lenta al trabajar con un conjunto de datos muy grande. 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.

Como no se proporciona el valor inicial, se considera que el valor inicial es 0 y se proporciona el último valor hasta 9. El último valor siempre es 1 menos que el valor dado, es decir, stop-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. Como el índice inicial es 3, la secuencia de números comenzará desde 3 hasta el valor final. El último valor de la secuencia será uno menos que el valor final: 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 final es 10, por lo que la secuencia de números terminará en (10-1), es decir, 9. El paso es 2, por lo que cada valor de la secuencia se incrementará en 2. Si no se especifica el valor del paso, se utilizará el valor predeterminado de 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() devuelve el valor incrementado para el valor de parada dado. Ahora veamos un ejemplo para obtener el valor decrementado en el rango dado.

Incrementar los valores en el rango usando un paso positivo

El parámetro step en range() se puede usar para incrementar o decrementar los valores. Por defecto, es un valor positivo, 1. Por lo tanto, siempre dará como resultado valores incrementados.

El valor del paso debe ser positivo si se desean valores incrementados como resultado.

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

Salida:

1 6 11 16 21 26

Reverse Rango: Disminución de los valores mediante pasos negativos

El parámetro `step` con un valor negativo en la función `range()` permite obtener valores decrementados. En el ejemplo siguiente, el valor de `step` es negativo, por lo que el resultado será un valor decreciente respecto al valor de `range` especificado.

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 final es 5 y el valor de paso es un número negativo, es decir, -1. Con los datos anteriores, la función range() disminuirá el valor desde 15 en adelante hasta alcanzar el valor final, pero la diferencia radica en que el último valor será el valor final + 1.

Usando números flotantes en Python distancia()

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.

El resultado 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 Se produce un error ya que la función range() no admite números de punto flotante para inicio, fin y paso.

Usando bucle for con Python distancia()

En este ejemplo, utilizaremos una matriz de números y veremos cómo iterar sobre ella dentro de un 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 usado len(arr_list) como valor de parada. El bucle for iterará hasta el valor de parada, es decir, la longitud del array, que será 4, ya que tenemos cuatro elementos en arr_list. El valor inicial será 0 y el paso será 1, por lo que los valores comenzarán en 0 y terminarán en 3, es decir, la longitud del array menos 1, lo que significa que 4 - 1 = 3.

El uso de Python rango() 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()

Al usar range() se obtiene la lista de números pares dentro del rango especificado. Los parámetros de range() son: inicio (2), fin (20) y paso (2). Por lo tanto, los valores se incrementarán de dos en dos, generando números pares hasta fin menos 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, concatenaremos dos 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 arange() que funciona y produce un resultado similar al de range(). La función arange() acepta los mismos parámetros que range().

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 encuentra el módulo numpy, deberá 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 números decimales se muestran con 16 cifras decimales. Esto se debe a la complejidad de almacenar números decimales en formato binario. Si es necesario, también puede redondear los valores y limitarlos a la cantidad de decimales que requiera.

Preguntas Frecuentes

In Python 3. range() devuelve un objeto range inmutable y de carga diferida, no una lista. Genera números bajo demanda. Envuélvalo en list(range(n)) cuando necesite una lista real. Python 2 devolvió una lista completa.

El valor de parada es exclusivo para que range(len(items)) se asigne correctamente a índices basados ​​en cero. Para incluir el punto final, sume uno al valor de parada; por ejemplo, range(1, 11) para contar del 1 al 10.

No. Llamar a range(0, 10, 0) genera un ValueError: range() arg 3 no debe ser cero, porque un paso cero nunca podría alcanzar el valor de parada y entraría en un bucle infinito. Use un paso positivo o negativo en su lugar.

`range()` rechaza los números de coma flotante, pero una comprensión de lista puede escalar los enteros: `[x * 0.5 for x in range(0, 6)]` produce de 0.0 a 2.5. Esto evita importar NumPy y aún así avanzar.ping a través de valores decimales.

Sí. Un objeto de rango almacena únicamente sus valores de inicio, fin y paso, por lo que range(1000000) utiliza la misma cantidad mínima y constante de memoria que range(10). Los valores se calculan uno a uno durante la iteración.

Utilice el operador in: 5 in range(0, 10) devuelve True. Para objetos range, Python Realiza esta prueba de pertenencia con aritmética rápida en tiempo constante en lugar de escanear cada elemento, por lo que sigue siendo eficiente en rangos muy grandes.

El código de aprendizaje automático utiliza range() para iterar sobre las épocas de entrenamiento, procesar minilotes y construir cuadrículas de hiperparámetros. Las funciones arange() y linspace() de NumPy extienden esta funcionalidad a rangos de punto flotante para programaciones de tasa de aprendizaje y barridos de umbral, comunes en experimentos de IA.

Sí. Los asistentes de codificación de IA, como GitHub Copilot, autocompletan bucles basados ​​en range() a partir de un comentario o nombre de función, y las herramientas de agentes pueden refactorizar bucles de índice en patrones enumerate() o de comprensión más limpios, aunque los límites generados aún necesitan una revisión rápida.

Resumir este post con: