Python range para conteo e indexación rápidos
La función integrada python range crea una secuencia inmutable de enteros definida por inicio, fin y paso.
Úsala cuando necesitas contadores fiables o desplazamientos de índice sin asignar una lista con todos los números.
Muestra cómo inicio, fin y paso controlan los enteros que produce un range.
Para patrones de bucle que usan range, mira el ejemplo de bucle for en Python.
Ejemplo De Python Range Para Conteo Con Paso
Salida:
La salida aparecerá aquí...
Salida:
bolígrafo: 10 mm
grapadora: 30 mm
Cómo Funciona Este Ejemplo
range(0, len(items), 2)recorre los índices de la lista con un paso de 2.- El valor de fin es exclusivo, así que nunca llega a
len(items). - Cada índice lee un elemento y muestra un valor ligado al índice (10, 30).
Errores comunes con Python range
Error 1: Esperar que el valor de fin se incluya.
for n in range(1, 5):
print(n)
for n in range(1, 6):
print(n)
Por qué pasa: range se detiene antes del valor final, así que las secuencias inclusivas necesitan stop + 1.
Error 2: Usar un paso positivo al contar hacia abajo.
for n in range(5, 0, 1):
print(n)
for n in range(5, 0, -1):
print(n)
Por qué pasa: un paso positivo solo avanza hacia arriba; para contar hacia abajo, el paso debe ser negativo o el rango queda vacío.
Error 3: Pasar no enteros como inicio, fin o paso.
for rate in range(0, 1, 0.1):
print(rate)
for basis_points in range(0, 101, 5):
rate = basis_points / 100
print(rate)
Por qué pasa: los argumentos de range deben ser enteros (o implementar __index__), y el paso no puede ser cero.
python range vs list(range): cuál usar
Usa range cuando… | Usa list(range(...)) cuando… |
|---|---|
| Solo necesitas iterar o indexar por enteros. | Debes almacenar o mutar los números después. |
| Quieres memoria constante mientras iteras. | Estás bien pagando memoria O(n) por una lista concreta. |
| Necesitas un objeto de secuencia con matemática predecible de inicio, fin y paso. | Necesitas métodos de list como append o sort. |
Regla general: elige range para iteración y desplazamientos; crea una lista solo cuando realmente necesites todos los valores en memoria.
Cuando necesitas pares índice + valor, prefiere enumerate — mira el ejemplo de Python enumerate.
Consideraciones De Rendimiento
range solo almacena inicio, fin y paso, así que usa O(1) memoria incluso para secuencias enormes.
Comprobaciones como n in range(...) son de tiempo constante para enteros, lo que es más rápido que recorrer una lista.
Si llamas a list(range(...)), pagas memoria y tiempo O(n) para asignar cada valor, así que hazlo solo cuando necesites una lista real.
Más patrones para Python range
Cuenta atrás los reintentos con un paso negativo.
for remaining in range(3, 0, -1):
print(f"Reintentando en {remaining}s")
El paso negativo hace que la secuencia baje, y el valor final sigue siendo exclusivo. Eso mantiene un conteo regresivo corto y predecible sin condicionales extra.
Genera horas laborables sin almacenar una lista.
for hour in range(9, 18):
print(f"{hour}:00")
range(9, 18) genera de 9 a 17, lo que coincide con un horario 9 a 5 con fin exclusivo.
Es una forma limpia de producir franjas fijas sin preconstruir los números.
Cuándo usar Python range
- Úsalo para contadores, desplazamientos o bucles de paso fijo donde los datos sean una secuencia de enteros.
- Úsalo cuando quieres una secuencia eficiente en memoria en lugar de una lista preconstruida.
- Evítalo para pasos no enteros; escala a enteros o usa otras herramientas numéricas.
- Evita
list(range(...))a menos que necesites almacenar o mutar los valores más tarde.