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: